解题思路:
注意事项:
参考代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int wiegth=scanner.nextInt();//背包大小 int num=scanner.nextInt();//物品数量 int[] w=new int[num+1];//重量 int[] v=new int[num+1];//价值 int dp[][]=new int[num+1][wiegth+1]; for (int i = 1; i <= num; i++) { w[i]=scanner.nextInt(); v[i]=scanner.nextInt(); } for (int i = 1; i <= num; i++) { for (int j = 1; j <= wiegth; j++) { for (int k = 0; k*w[i] <=wiegth ; k++) {//k=0 每个物品拿的数量从0开始 最多k*w[i]不能超过 j if (j >= k*w[i]) { dp[i][j] = Math.max(dp[i][j], dp[i-1][j -k * w[i]] +v[i]*k); }else { dp[i][j]=dp[i][j]; } } } } System.out.println("max="+dp[num][wiegth]); } }
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:544 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:373 |
母牛的故事 (C语言代码)浏览:915 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:748 |
printf基础练习2 (C语言代码)浏览:503 |
蚂蚁感冒 (C语言代码)浏览:768 |
分解质因数 (C++代码)浏览:1471 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:795 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:762 |