用P1060来讲解01背包
P1060 开心的金明(基础背包)
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。这道题是01背包裸题
超级难
首先讲解一下01背包
01背包的基本模型为 已经拥有的资本(即背包容量)
可以获得物品的价值和代价(即物品的价值和体积)
所以我们用最基本的无任何优化的代码实现一下
for(int i=1;i<=m;i++)//枚举所有物品 一共m个物品 所以从1到m { for(int j=0;j<=n;j++)//此处为枚举背包容量 即背包满容量为n { if(j<v[i])//如果当前容量小于当前物品的体积 便无法放下 所以 dp[i][j]状态和dp[i-1][j]一致 dp[i][j]=dp[i-1][j];//dp[i][j]代表当前放前i个物品剩余容量为j时的价值 else dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);//状态转移方程 } }
可以来用knapsack来模拟样例中的过程(一个01背包小插件)地址为http://karaffeltut.com/NEWKaraffeltutCom/Knapsack/knapsack.html
继续加油~
爱老婆.jpg

更多精彩