参考博客http://blog.csdn.net/sj13051180/article/details/6687674
关于0-1背包与多重背包讲的很细,适合入门。
贴我的代码:
#include <iostream> #include <stdio.h> using namespace std; int main(){ int dp[12900]; int n,m; int v[3405]; int w[3405]; while(cin >> n >> m){ for(int j=0;j<=m;j++) dp[j]=0; for(int i=1;i<=n;i++) cin >> w[i] >> v[i]; for(int i=1;i<=n;i++) for(int j=m;j>=w[i];j--) dp[j] = max(dp[j],dp[j-w[i]]+v[i]); for(int j=0;j<=m;j++){ cout << dp[j] <<" "; } cout <<endl; cout << dp[m] <<endl; } return 0; }