编辑代码

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);
    }
}