完全背包模板
#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; }
等风起的那一天,我已准备好一切
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步