是**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