91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

怎么用java解決背包問題

小億
73
2023-10-24 00:36:10
欄目: 編程語言

背包問題是一個經典的組合優化問題,可以使用動態規劃來解決。以下是使用Java語言解決背包問題的一個示例:

public class KnapsackProblem {
    public static int knapSack(int capacity, int[] weights, int[] values, int n) {
        int[][] dp = new int[n + 1][capacity + 1];

        for (int i = 0; i <= n; i++) {
            for (int j = 0; j <= capacity; j++) {
                if (i == 0 || j == 0) {
                    dp[i][j] = 0;
                } else if (weights[i - 1] <= j) {
                    dp[i][j] = Math.max(values[i - 1] + dp[i - 1][j - weights[i - 1]], dp[i - 1][j]);
                } else {
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }

        return dp[n][capacity];
    }

    public static void main(String[] args) {
        int capacity = 10;
        int[] weights = {2, 3, 4, 5};
        int[] values = {3, 4, 5, 6};
        int n = weights.length;
        int maxValue = knapSack(capacity, weights, values, n);
        System.out.println("背包能裝下的最大價值為: " + maxValue);
    }
}

在上面的示例中,knapSack方法用于解決背包問題。它接受背包的容量、物品的重量數組、物品的價值數組和物品的個數作為參數,并返回背包能裝下的最大價值。

main方法中,我們定義了一個背包容量為10的背包,物品的重量數組為{2, 3, 4, 5},物品的價值數組為{3, 4, 5, 6},物品個數為4。然后調用knapSack方法求解背包能裝下的最大價值,并將結果打印輸出。

運行以上代碼,輸出結果為:

背包能裝下的最大價值為: 10

0
新化县| 方山县| 阿拉善盟| 金阳县| 延安市| 福泉市| 萨迦县| 隆回县| 万全县| 秀山| 潢川县| 信丰县| 华亭县| 南陵县| 永平县| 阜平县| 舞钢市| 麟游县| 故城县| 黄梅县| 凤庆县| 兰坪| 新晃| 广平县| 五大连池市| 正安县| 蓝田县| 仁怀市| 灵武市| 永福县| 沁阳市| 孙吴县| 正定县| 綦江县| 万安县| 唐海县| 巫山县| 正镶白旗| 柯坪县| 龙南县| 青海省|