参考代码:
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); int[][] dp = new int[n+1][m+1]; // [物品数目][背包空间] int[] ar = new int[n+1]; for (int i = 1; i <= n; i++) { ar[i] = sc.nextInt(); } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (j >= ar[i]){ dp[i][j] = Math.max(dp[i-1][j],dp[i-1][j - ar[i]] + ar[i]); }else { dp[i][j] = dp[i-1][j]; } } } System.out.println(m-dp[n][m]); } }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:519 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:448 |
C语言训练-求函数值 (C语言代码)浏览:930 |
数组输出 (C语言代码)--此题的题目描述有问题浏览:1806 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:451 |
校门外的树 (C语言代码)浏览:692 |
1118(求助_已解决)浏览:329 |
交换Easy (C语言代码)浏览:759 |
输入输出格式练习 (C语言代码)浏览:743 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:662 |