2301_77589079 2023-04-12 16:50 采纳率: 54.5%
浏览 41
已结题

01背包问题用动态规划

0-1背包问题是很经典的算法问题:给定n种物品和一背包。物品i的重量是wi,价值是vi,背包最大容量是C。应该如何选择装入背包的物品,使得装入背包中物品的总价值最大?
样列1:
输入: 物品数:3
背包成重量:25
每个物品重量:[20,15,10]
每个物品价值:[25,30,20]
输出: 最大价值:50
此时包中装了第2、3件物品

我已经写了方法,想要主方法补写一下

img

  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2023-04-12 17:07
    关注
    public class Knapsack {
        public static int knapsack(int[] w, int[] v, int C) {
            int n = w.length;
            int[][] dp = new int[n + 1][C + 1];
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= C; j++) {
                    if (j < w[i - 1]) {
                        dp[i][j] = dp[i - 1][j];
                    } else {
                        dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - w[i - 1]] + v[i - 1]);
                    }
                }
            }
            return dp[n][C];
        }
    
        public static void main(String[] args) {
            int[] w = {20, 15, 10};
            int[] v = {25, 30, 20};
            int C = 25;
            int maxVal = knapsack(w, v, C);
            System.out.println("最大价值:" + maxVal);
        }
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月14日
  • 修改了问题 4月12日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 c语言做一个简单的计算器,大家来看看
  • ¥15 nuxtjs3+ts 报错,急呀!
  • ¥15 matlab矩阵复数本征值排序
  • ¥15 skynet MySQL ProtocolBuffers
  • ¥15 浏览器关闭事件有时没执行怎么回事
  • ¥15 使用docker安装chemex后无法启动
  • ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题