解题思路:
注意事项:
参考代码:
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语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:655 |
C语言考试练习题_排列 (C语言代码)浏览:719 |
printf基础练习2 (有点不明白)浏览:836 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:560 |
杨辉三角 (C语言代码)浏览:484 |
C二级辅导-等差数列 (C语言代码)浏览:694 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:441 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:662 |
筛排处理 (C语言代码)浏览:782 |
1005答案错误为什么浏览:1975 |