华为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]);

    }

}
相关推荐
武昌库里写JAVA2 分钟前
Java如何快速入门?Java基础_Java入门
java·vue.js·spring boot·后端·sql
wefg19 分钟前
【C++】智能指针
开发语言·c++·算法
MSTcheng.9 分钟前
【C++模板进阶】C++ 模板进阶的拦路虎:模板特化和分离编译,该如何逐个突破?
开发语言·c++·模板
那我掉的头发算什么11 分钟前
【javaEE】多线程进阶--CAS与原子类
android·java·jvm·java-ee·intellij-idea
rising start17 分钟前
二、python面向对象高级
开发语言·python
Yue丶越18 分钟前
【Python】基础语法入门(二)
android·开发语言·python
Demon--hx19 分钟前
[c++]string的三种遍历方式
开发语言·c++·算法
SteveCode30 分钟前
血赚不亏!Java 17 9 个炸裂特性,程序员看完直呼:太香了!
java
共享家952733 分钟前
QT-系统(多线程)
开发语言·数据库·qt
BLOB_1010011 小时前
关于懒人复制idea项目的坑
java·ide·intellij-idea