分析:简单的完全背包(因为每种食物可以不止取一个)。
#include<iostream> using namespace std; int dp[100005]; int v[102],w[102]; int main() { int n,m,i,j; while(cin>>n) { for(i=0;i<n;i++) cin>>w[i]>>v[i]; cin>>m; memset(dp,0,sizeof(dp)); for(i=0;i<n;i++) for(j=v[i];j<=m;j++) dp[j]=dp[j]>dp[j-v[i]]+w[i]?dp[j]:dp[j-v[i]]+w[i]; cout<<dp[m]<<endl; } return 0; }
原文地址:http://blog.csdn.net/a809146548/article/details/45848371