解题思路:
注意事项:
参考代码:
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 人评分
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:683 |
不容易系列 (C语言代码)浏览:668 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:774 |
兰顿蚂蚁 (C++代码)浏览:1045 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:840 |
IP判断 (C语言代码)浏览:763 |
2^k进制数 (C语言描述,蓝桥杯)浏览:1420 |
妹子杀手的故事 (C语言代码)浏览:1054 |
字符串比较 (C语言代码)浏览:685 |
输入输出格式练习 (C语言代码)浏览:849 |