怎么用java解决背包问题

73次阅读
没有评论

共计 833 个字符,预计需要花费 3 分钟才能阅读完成。

背包问题是一个经典的组合优化问题,可以使用动态规划来解决。以下是使用 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

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-16发表,共计833字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)