动态规划之背包问题

来源:互联网 发布:匹克模考tpo软件 编辑:程序博客网 时间:2024/06/05 12:45

只要思虑捋清晰了,代码很容易实现,算法最重要的还是举一反三

物品Bean:

package com.daxin;public class Good {public int value;public int weight;/** *  * @param value * @param weight */public Good(int value, int weight) {super();this.value = value;this.weight = weight;}@Overridepublic String toString() {return "Good [value=" + value + ", weight=" + weight + "]";}}



/** * @description 只要思路捋顺了,代码很容易实现 * @param goods *            物品数组 * @param maxWeight *            背包最大容量 * @return */public static int maxValue(Good[] goods, int maxWeight) {// 默认全是0int[][] valueMatrix = new int[goods.length][maxWeight + 1];for (int i = 1; i < goods.length; i++) {for (int j = 1; j < maxWeight + 1; j++) {Good g = goods[i];if (g.weight > j) {// 当前物品的weight大于书包的容量j时候valueMatrix[i][j] = valueMatrix[i - 1][j];} else if (g.weight == j) {valueMatrix[i][j] = g.value;} else {valueMatrix[i][j] = Math.max(g.value + valueMatrix[i - 1][j - g.weight], valueMatrix[i - 1][j]);}}}return valueMatrix[goods.length-1][maxWeight];}







0 0
原创粉丝点击