杨陈


私信TA

用户名:yccc

访问量:13238

签 名:

等  级
排  名 80
经  验 9228
参赛次数 0
文章发表 64
年  龄 0
在职情况 学生
学  校 湖北生物科技职业学院
专  业

  自我简介:

解题思路:

注意事项:

参考代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int wiegth=scanner.nextInt();//背包大小
        int num=scanner.nextInt();//物品数量
        int[] w=new int[num+1];//重量
        int[] v=new int[num+1];//价值
        int dp[][]=new int[num+1][wiegth+1];
        for (int i = 1; i <= num; i++) {
            w[i]=scanner.nextInt();
            v[i]=scanner.nextInt();
        }
        for (int i = 1; i <= num; i++) {
            for (int j = 1; j <= wiegth; j++) {
                    for (int k = 0; k*w[i] <=wiegth ; k++) {//k=0 每个物品拿的数量从0开始 最多k*w[i]不能超过 j
                        if (j >= k*w[i]) {
                            dp[i][j] = Math.max(dp[i][j], dp[i-1][j -k * w[i]] +v[i]*k);
                        }else {
                            dp[i][j]=dp[i][j];
                        }
                }
            }
        }
        System.out.println("max="+dp[num][wiegth]);
    }
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区