01背包问题
2018-03-07 10:51
211 查看
0-1 背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。
问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?
思路:f(i,x)表示前i件物品 背包容量为x时的最优价值
状态方程为 f(i,x) = max(f(i-1,x-w[i]) + c[i], f(i-1,x));
问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?
思路:f(i,x)表示前i件物品 背包容量为x时的最优价值
状态方程为 f(i,x) = max(f(i-1,x-w[i]) + c[i], f(i-1,x));
#include<bits/stdc++.h> using namespace std; const int N = 105; int m,n; int w ,c ,dp ; int main() { cin >> m >> n; // 背包的容量为m 一共有n种物品 for(int i = 1;i <= n;i ++) cin >> w[i] >> c[i]; //输入每一种物品的重量和价值 for(int i = 1;i <= n;i ++){ for(int j = 1;j <= m;j ++){ if(j >= w[i]) dp[i][j] = max(dp[i-1][j-w[i]] + c[i],dp[i-1][j]); else dp[i][j] = dp[i-1][j]; } } cout << dp [m]; return 0; }
相关文章推荐
- 背包问题(01背包、完全背包)死记应试
- 01背包问题-POJ 2184 Cow Exhibition
- 01背包问题动态规划详解(转载)
- hdu 2602 背包问题之01背包
- 简单:01背包问题
- 01背包问题
- 01背包问题——<DP>
- 01背包问题
- 01背包初始化的细节问题与循环下限的改进
- 邮票分你一半 N个数最大可能均分 01背包问题
- 简单的01背包问题(采药)
- 洛谷P1049 装箱问题(01背包小变形)
- 01背包问题
- 01背包问题
- 背包问题1:01背包
- 01背包问题
- 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)
- 01背包问题--动规
- 01背包问题总结
- 01背包问题【简单背包,UVA624】