解题思路:
注意事项:
参考代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int v = scanner.nextInt(); // 箱子容量
int n = scanner.nextInt(); // 物品数量
int[] vol = new int[n + 1];
for (int i = 1; i <= n; i++) {
vol[i] = scanner.nextInt(); // 物品体积
}
int[][] dp = new int[n + 1][v + 1];
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= v; j++) {
dp[i][j] = dp[i - 1][j]; // 不装入第i个物品
if (j >= vol[i]) { // 考虑装入第i个物品
dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - vol[i]] + vol[i]);
}
}
}
System.out.println(v - dp[n][v]); // 输出箱子剩余空间
}
}
0.0分
0 人评分
C语言训练-数字母 (C语言代码)浏览:649 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:603 |
WU-判定字符位置 (C++代码)浏览:1395 |
1054题解浏览:460 |
小九九 (C语言描述,不看要求真坑爹)浏览:984 |
DNA (C语言代码)浏览:735 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:582 |
C语言训练-排序问题<1> (C语言代码)浏览:355 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:521 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:479 |