老师为公平起见,只买一种类型。开始构思时,掉坑了以为组合不同类型的花费最少 。
import java.util.ArrayList;
import java.util.Scanner;
/**
* 问题:
* P老师需要去商店买n支铅笔作为小朋友们参加编程比赛的礼物。她发现商店一共有 3 种包装的铅笔,
* 不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P老师决定只买同一种包装的铅笔。
* 商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过 n 支铅笔才够给小朋 友们发礼物。
* 现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少 n 支铅笔最少需要花费多少钱。
*
*
* 输入描述
* 第一行包含一个正整数 n ,表示需要的铅笔数量。 接下来三行,
* 每行用 2 个正整数描述一种包装的铅笔:
* 其中第 1 个整数表示这种 包装内铅笔的数量,第 2 个整数表示这种包装的价格。
* 保证所有的 7 个数都是不超过 10000 的正整数。
*
* 输出描述:
* 1 个整数,表示P老师最少需要花费的钱。
* 输入数据:
* 57
2 2
50 30
30 27
输出
54
*
* @author Administrator
*
*/
public class 买铅笔 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str_0 = scan.nextLine().trim();
int n = Integer.parseInt(str_0);
ArrayList<ArrayList<Integer>> arr = new ArrayList<>();
for(int i = 0; i < 3; i++){
String str_1 = scan.nextLine();
String[] line_list_1 = str_1.trim().split(" ");
ArrayList<Integer> temp_1 = new ArrayList<>();
for(int j = 0; j < line_list_1.length; j++){
temp_1.add(Integer.parseInt(line_list_1[j]));
}
arr.add(temp_1);
}
scan.close();
int result = solution(n, arr);
System.out.println(result);
}
public static int solution(int n, ArrayList<ArrayList<Integer>> arr){
int result = 0;
// TODO: 请在此编写代码
for (int i = 0; i < arr.size(); i++) {
int pnum=arr.get(i).get(0);
int price=arr.get(i).get(1);
int box=0;
if(n%pnum>0){
box=n/pnum+1;
}else{
box=n/pnum;
}
int temp =box*price;
if( temp < result || result==0){
result = temp;
}
}
return result;
}
}