0-1背包问题
package com.test.clickhouse.config;/** * @author jia * @since 2022-04-13 10:39 */public class Bag { public static void main(String[] args) { int dp = dp(3, 4, new int[]{2, 1, 3}, new int[]{4, 2, 3}); System.out.println(dp); } public static int dp(int num, int maxW, int[] weight, int[] price) { int[][] dp = new int[num + 1][maxW + 1]; for (int i = 1; i <= num; i++) { for (int j = 1; j <= maxW; j++) { // 边界处理:当前最大重量-当前物品重量=剩余载重(不能<0) if (j - weight[i - 1] < 0) { System.out.println("=============i=" + i + ",j=" + j); dp[i][j] = dp[i - 1][j]; } else { System.out.println("i=" + i + ",j=" + j + ",j-weight[i-1]====" + (j - weight[i - 1])); dp[i][j] = Math.max(dp[i - 1][j - weight[i - 1]] + price[i - 1], dp[i - 1][j]); } } } return dp[num][maxW]; }}