http://poj.org/problem?id=3624
就是很直接的01问题 可以复习用 但是!被全局数组和局部数组搞得一直过不了,改了才ac。
是因为空间问题么
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<iostream> 5 #include<algorithm> 6 #define N 4000 7 using namespace std; 8 int w[13000],d[13000],f[12885]; 9 int main() 10 { 11 int n,m; 12 while(scanf("%d%d",&n,&m)!=EOF) 13 { 14 for(int i=1;i<=n;i++) 15 { 16 scanf("%d%d",&w[i],&d[i]); 17 } 18 for(int i=1;i<=n;i++) 19 { 20 for(int k=m;k>=w[i];k--) 21 f[k]=max(f[k],f[k-w[i]]+d[i]); 22 } 23 printf("%d ",f[m]); 24 } 25 return 0; 26 }