public class Knapsack {
private static int maxProfit;
private static int[] weights;
private static int[] values;
private static int capacity;
public static void main(String[] args) {
weights = new int[]{2, 3, 4, 5};
values = new int[]{3, 4, 5, 6};
capacity = 8;
maxProfit = 0;
backtrack(0, 0, 0);
System.out.println("最大价值: " + maxProfit);
}
private static void backtrack(int index, int currentWeight, int currentProfit) {
if (index == weights.length || currentWeight == capacity) {
if (currentProfit > maxProfit) {
maxProfit = currentProfit;
}
return;
}
if (currentWeight + weights[index] <= capacity) {
backtrack(index + 1, currentWeight + weights[index], currentProfit + values[index]);
}
backtrack(index + 1, currentWeight, currentProfit);
}
}