Login
网站首页 > 文章中心 > 其它

完全背包问题java

作者:小编 更新时间:2023-07-08 10:26:43 浏览量:43人看过

下面土嘎嘎小编分享一个使用动态规划解决完全背包问题的Java示例代码:

〓〓java代码如下:〓〓

public class Knapsack {

    public static int knapsack(int capacity, int[] weights, int[] values) {

        int numItems = weights.length;

        int[][] dp = new int[numItems + 1][capacity + 1];

        for (int i = 0; i <= numItems; i++) {

            for (int w = 0; w <= capacity; w++) {

                if (i == 0 || w == 0)

                    dp[i][w] = 0;

                else if (weights[i - 1] <= w)

                    dp[i][w] = Math.max(values[i - 1] + dp[i][w - weights[i - 1]], dp[i - 1][w]);

                else

                    dp[i][w] = dp[i - 1][w];

            }

        }

        return dp[numItems][capacity];

    }

    public static void main(String[] args) {

        int capacity = 50;

        int[] weights = {10, 20, 30};

        int[] values = {60, 100, 120};

        int maxValue = knapsack(capacity, weights, values);

        System.out.println("Maximum value that can be obtained: " + maxValue);

    }

}

上面给出的代码使用二维数组 dp 来构建动态规划表格,其中 dp[i][w] 表示在考虑前 i 个物品且背包容量为 w 时可以获得的最大价值。通过填充这个表格,我们逐步计算每个子问题的最优解,直到获得整个背包问题的最优解。

在 main 方法中,我们定义了一个背包容量、一组物品的重量和价值,并调用 knapsack 方法来计算最大价值。最后,将结果打印出来。

土嘎嘎技术网友情提示:此代码仅提供了一种解决完全背包问题的方法,而完全背包问题有多种变体和解决方法。具体的实现可能会因问题的要求和约束条件而有所不同。


版权声明:倡导尊重与保护知识产权,本站有部分资源、图片来源于网络,如有侵权,请联系我们修改或者删除处理。
转载请说明来源于"土嘎嘎" 本文地址:http://www.tugaga.com/jishu/other/1070.html
<<上一篇 2023-07-08
下一篇 >> 2023-07-08

编辑推荐

热门文章