动态规划-试题(2)-背包问题
2017-08-30 11:14
176 查看
背包问题
/*** 背包问题:
*
* 有N件物品和一个容量为V的背包。第i件物品的价值是v[i],重量是w[i]。
* 求解将哪些物品装入背包可使价值总和最大。
*
*
* 重新定义问题:
*
*
* 状态转移方程:
* 状态:设d(i, j)为前i件物品转到剩余体积为j的背包的最大价值
* 方程:d(i, j) = max{d(i-1, j), d(i-1, j-w[i])+v[i]}, j-w[i]>=0
*/
代码
/** * 在这段代码里面,所有数组的第一位,也就是int[0]是无效的 * @param args */ public static void main(String[] args){ int n = 5;//物件数量 int v = 10;//背包空间 int[] value = {0, 8, 10, 4, 5, 5}; int[] weight = {0, 6, 4, 2, 4, 3}; int[][] d = new int[n+1][v+1];//用于保存所求的最大价值 //遍历每一个物品 for (int i = 1; i <= n; i++) { //这个物品在背包空间为1到V(最大)情况下的最大价值 for (int j = 1; j <= v; j++) { //如果放得下 if (j >= weight[i]) { int a = d[i-1][j];//不放的价值 int b = d[i-1][j - weight[i]] + value[i];//放的价值 d[i][j] = a > b ? a : b; }else { //放不下 d[i][j] = d[i-1][j]; } } } System.out.println(d [v]); }
相关文章推荐
- 动态规划之背包问题,最基础的动态规划
- 01背包问题 -- 经典动态规划题
- 0-1背包问题动态规划
- 0-1背包问题的动态规划解法为什么是NPC问题?
- 动态规划-背包问题0-1
- 动态规划:POJ2576-Tug of War(二维费用的背包问题)
- 背包问题-2动态规划【正解】
- 0-1背包问题之动态规划&回溯法
- 背包问题与动态规划的基本思想
- BZOJ 4145 浅谈状态压缩动态规划背包问题
- Java求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包动态规划问题求解)
- 0-1背包问题(动态规划入门)
- 动态规划——物品无限的背包问题
- 动态规划:多重背包问题-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 0/1背包问题动态规划详解(转)
- 动态规划7:砝码和种类优化成01背包问题
- 动态规划:背包问题
- 洛谷 1616——疯狂的采药(动态规划的背包问题)
- 动态规划之背包问题
- HDU 2159 FATE (动态规划dp之二维完全背包问题)