01背包裸题,我就不赘述了,……01背包不会的自己去学背包九讲吧,太水了啊啊啊啊。
第20行写渣了,if判断直接加到for循环边界里就好了。。
#include <cstdio> #include <cstring> #include <algorithm> #define N 3403 #define M 12881 using namespace std; int n,m; int f[M]; int main() { // freopen("test.in","r",stdin); int i,j,p,a,b; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d%d",&a,&b); for(j=m;j>=0;j--)if(j+a<=m) { f[j+a]=max(f[j+a],f[j]+b); } } for(p=i=0;i<=m;i++)p=max(p,f[i]); printf("%d\n",p); return 0; }