解题思路:
注意事项:
参考代码:
import java.util.Scanner; public class 开心的金明 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt();//总价值 int n= sc.nextInt();//物品的数量 int i, j; int[] p = new int[n + 1]; int[] w = new int[n + 1]; int[][] dp = new int[n + 1][m + 1]; for (i = 1; i <= n; i++) { w[i] = sc.nextInt(); //每个东西的价格 p[i] = sc.nextInt();//满意度 p[i]*=w[i];//满意度×价格 } //后面就是背包问题了,参考01背包 for (i = 1; i <= n; i++) for (j = 1; j <= m; j++) { if (j < w[i]) {dp[i][j] = dp[i - 1][j]; } else { dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - w[i]] + p[i]); } } System.out.print(dp[n][m]); } }
0.0分
2 人评分
打水问题 (C语言代码)浏览:1148 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:544 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2121 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:585 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1483 |
C二级辅导-等差数列 (C语言代码)浏览:806 |
分糖果 (C语言代码)浏览:980 |
整除的尾数 (C语言代码)浏览:852 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:630 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:522 |