华为OD机试-云短信平台优惠活动-完全背包(JAVA 2024E卷)


java 复制代码
public class My {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int maxNum = Integer.parseInt(str);
        String line = sc.nextLine();
        String[] strings = line.split(" ");
        int n = strings.length;

        //要考虑到物品0的情况,物品0的重量和价值都是0
        int[] values = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            values[i] = Integer.parseInt(strings[i - 1]);
        }

        int[] wight = new int[n + 1];
        for (int i = 0; i < wight.length; i++) {
            wight[i] = i;
        }

        int[][] dp = new int[n + 1][maxNum + 1];
        for (int i = 1; i <= n; i++) {//物品数量
            for (int j = 1; j <= maxNum; j++) {//重量
                if (j < wight[i]) {//当前物品重量大于当前背包重量,不放入物品
                    dp[i][j] = dp[i - 1][j];
                }else {
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - wight[i]] + values[i]);
                }
            }
        }
        System.out.println(dp[n][maxNum]);

    }

}
相关推荐
张人玉24 分钟前
WPF布局控件(界面骨架核心)
开发语言·c#·wpf·布局控件
闲人编程30 分钟前
使用MLflow跟踪和管理你的机器学习实验
开发语言·人工智能·python·机器学习·ml·codecapsule
看兵马俑的程序员36 分钟前
RAG实现-本地PDF内容加载和切片
开发语言·python·pdf
专注前端30年38 分钟前
【JavaScript】reduce 方法的详解与实战
开发语言·前端·javascript
两个人的幸福online1 小时前
php使用腾讯云服务
开发语言·php·腾讯云
无敌最俊朗@1 小时前
C++ STL Deque 高频面试题与答案
开发语言·c++
lang201509281 小时前
打造专属Spring Boot Starter
java·spring boot·后端
清羽_ls1 小时前
bash 基础编程的核心语法
开发语言·bash
和编程干到底1 小时前
C++基础
开发语言·c++
曹牧1 小时前
C#:数组不能使用Const修饰符
java·数据结构·算法