作业帮 > 综合 > 作业

蓝桥杯java试题购物券

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/01 05:36:56
蓝桥杯java试题购物券
公司发了某商店的购物券1000元,限定只能购买店中的m种商品.每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法.
程序输入:第一行是一个整数m,代表可购买的商品的种类数.
接下来是m个整数,每个1行,分别代表这m种商品的单价(0
蓝桥杯java试题购物券
public class Cal {
private static Integer price[];
private static Integer result[];
private static Integer num;
private static List<Integer[]> list = new ArrayList<Integer[]>();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String numStr = br.readLine();
num = Integer.parseInt(numStr);
if(num==null||num==0) return;
price = new Integer[num];
result = new Integer[num];
for(int i=0; i<num; i++){
result[i] = 0;
}
for(int i=0; i<num; i++){
price[i] = Integer.parseInt(br.readLine());
}
cal(1000, 0);
System.out.println(list.size());
for(Integer[] resu : list){
for(Integer n : resu){
System.out.print(n+" ");
}
System.out.println();
}
}
public static void cal(int money, int i){
if(money<0)return;
if(i>=num)return;
if(money==0){
Integer[] line = new Integer[num];
for (int j = 0; j < line.length; j++) {
line[j] = result[j];
}
list.add(line);
return;
}
for(;i<num;i++){
result[i]++;
cal(money-price[i], i);
result[i]--;
}
}
}