
(练习)奇安信2020大数据开发工程师编程题(买口罩)(java)
小明有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 m
·
小明有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]);
}
}
更多推荐
所有评论(0)