完全背包模板
#include <iostream> #include<cstring> using namespace std; const int nmax=1000; int v[nmax];//v[i]表示第i个物品的价值value int w[nmax];//w[i]表示第i个物品的重量weight int dp[nmax];//总价值 int n,m;//n表示物品数量,m表示背包容量 int main(int argc, char** argv) {//一维数组实现的完全背包模板 while(cin>>n>>m){ memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++){ cin>>w[i]>>v[i]; } for(int i=0;i<n;i++){//遍历n个物品 for(int j=0;j<=m;j++){//完全背包容量 顺序遍历 if(j>=w[i]){ dp[j]=max(dp[j],(dp[j-w[i]]+v[i])); }//第i个物体不选,dp[j]=dp[j]; //第i个物体若选 dp[j]=dp[j-w[i]]+v[i] } } cout<<dp[m]<<endl; } return 0; }
等风起的那一天,我已准备好一切