public class Pack {
int totalWeight = 100;
int weight[] = { 10, 10, 20, 30, 40, 40, 20 };
int maxWeight[][] = new int[totalWeight + 1][weight.length + 1];
public static void main(String[] args) {
Pack pack = new Pack();
int result = pack.getMaxWeight(pack.totalWeight, pack.weight.length - 1);
System.out.println(result);
}
int getMaxWeight(int totalWeight, int num) {
int maxResult = 0;
if (this.maxWeight[totalWeight][num] != -1) {
maxResult = maxWeight[totalWeight][num];
}
if (totalWeight >= weight[num]) {
if (num == 0) {
maxResult = weight[num];
} else {
int result1 = getMaxWeight(totalWeight - weight[num], num - 1) + weight[num];
int result2 = getMaxWeight(totalWeight, num - 1);
maxResult = max(result1, result2);
}
}
return maxResult;
}
int max(int a, int b) {
return a > b ? a : b;
}
}
简单装箱
最新推荐文章于 2025-05-06 18:22:11 发布
本文介绍了一个简单的背包问题求解算法实现。通过递归的方式计算在给定容量限制下,如何选择物品以达到最大的总重量。代码中定义了一个名为Pack的类,其中包含物品重量数组和一个二维数组用于缓存中间结果。
936

被折叠的 条评论
为什么被折叠?



