小明有N元钱去药店买口罩,药店里有6个品牌的口罩,A品牌2个装(2元),B品牌3个装(2元)、C品牌1个装(3元)、D品牌5个装(1元),E品牌4个装(5元),F品牌3个装(2元),由于限购每个品牌最多只能买一个,小明最多能买多少口罩?

 

读完题就会发现是经典0-1背包问题 

 提笔就开始二维做

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[][] dp  = new int[7][n + 1];
        dp[0][0] = 0;
        int[][] arr = {{2, 2}, {3, 2},{1, 3}, {5, 1}, {4, 5}, {3, 2}};
        for(int i = 1; i <= 6; i ++){
            for(int j = 1; j <= n; j ++){
                if(j >= arr[i - 1][1]){
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - arr[i - 1][1]] + arr[i - 1][0]);
                }else{
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }
        System.out.println(dp[6][n]);
    }
}

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐