有3个WA

P1048 [NOIP2005 普及组] 采药

是**01背包**而并非**完全背包**
by SteveFang @ 2020-08-30 12:07:15


@[Pethly_Cat](/user/134066) 这下全WA了
by 幽灵特工 @ 2020-08-30 12:07:54


@[幽灵特工](/user/332549) `for(int j=0;j<=n;j++)` 改成 `for(int j=n;j>=0;j--)`
by SteveFang @ 2020-08-30 12:08:16


@[Pethly_Cat](/user/134066) 。。。
by SteveFang @ 2020-08-30 12:08:47


@[幽灵特工](/user/332549) 应该是 for(int j=1;j<=n;j++)吧
by zyk7 @ 2020-08-30 12:10:38


@[幽灵特工](/user/332549) 按照我的刚才说的,然后输入改成从1输到m,应该就可以了
by SteveFang @ 2020-08-30 12:12:24


@[幽灵特工](/user/332549) ~~当我什么也没说...~~
by Pethly_Cat @ 2020-08-30 12:12:35


@[幽灵特工](/user/332549) 不对,你把输入的那个循环改成 i=1开始,i<=m结束
by zyk7 @ 2020-08-30 12:16:22


@[SteveFang](/user/158171) 能给一份代码吗
by 幽灵特工 @ 2020-08-30 12:27:57


``` #include <bits/stdc++.h> using namespace std; int dp[102][1003]={0}; struct p{ int time; int vol; }a[103]; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=m;i++){ cin>>a[i].time>>a[i].vol; } for(int i=1;i<=m;i++){ for(int j=n;j>=0;j--){ if(a[i].time>j)dp[i][j]=dp[i-1][j]; else dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i].time]+a[i].vol); } } cout<<dp[m][n]; } ```
by SteveFang @ 2020-08-30 12:36:08


| 下一页