if(w[i]<=y)
by 张曜玺 @ 2017-08-28 20:09:57
应该是小于j啊
by 张曜玺 @ 2017-08-28 20:10:27
太谢谢了、
by FireKid @ 2017-08-28 20:11:01
我还是喜欢一维数组背包
by yy233 @ 2017-09-09 14:05:30
循环要倒序
```cpp
#include<bits/stdc++.h>
using namespace std;
int c[30010],w[30010],f[30010];
int main()
{
int t,n,i,j;
cin>>t>>n;
for(i=1;i<=n;i++)
cin>>w[i]>>c[i];
for(i=1;i<=n;i++)
for(j=t;j>=w[i];j--)//此处循环倒序
f[j]=max(f[j],f[j-w[i]]+c[i]);
cout<<f[t];
}
```
by 皮某 @ 2017-09-30 23:18:39
第一:最好自己写一个max函数,不要投巧
第二:f数组开到1000+(只能说数据强...)
by 圣弗朗西斯科 @ 2017-10-04 13:34:12
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,m,c[1003],v[1003],f[1003],sum;
int main()
{
cin>>m>>n;
for(int i=1;i<=n;i++)
cin>>c[i]>>v[i];
for(int i=1;i<=n;i++)
for(int j=m;j>=c[i];j--)
f[j]=max(f[j],f[j-c[i]]+v[i]);
for(int i=1;i<=m;i++)
sum=max(sum,f[i]);
cout<<sum;
return 0;
}
```
by 鲸与梦之歌 @ 2017-10-21 10:56:28