java实现购物券消费方案
JAVA 实现 方案 消费
2023-09-14 08:58:12 时间
公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。
程序输入:
第一行是一个整数m,代表可购买的商品的种类数。
接下来是m个整数,每个1行,分别代表这m种商品的单价(0<m<1000)。
程序输出:
第一行是一个整数,表示共有多少种方案
第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。
例如:
输入:
2
200
300
则应输出:
2
2 2
5 0
输入:
2
500
800
则应输出:
1
2 0
输入:
1
999
则应输出:
0
多个方案间的顺序不重要。
package com.liu.ex3;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static ArrayList<Integer> list = new ArrayList<Integer>();
public static int[][] value;
public static int m;
public static int count = 0;
public static String result = "";
public void dfs(int sum, int step) {
if(step == m) {
if(sum == 1000) {
for(int i = 0;i < list.size();i++) {
result += list.get(i)+" ";
}
result += "\n";
count++;
}
return;
} else {
for(int i = 0;i <= value[step][1];i++) {
sum += value[step][0] * i;
list.add(i);
dfs(sum, step + 1);
sum -= value[step][0] * i;
list.remove(list.size() - 1);
}
}
}
public static void main(String[] args) {
Main test = new Main();
Scanner in = new Scanner(System.in);
m = in.nextInt();
value = new int[m][2];
for(int i = 0;i < m;i++) {
int a = in.nextInt();
int num = 1000 / a;
value[i][0] = a;
value[i][1] = num;
}
test.dfs(0, 0);
if(count == 0)
System.out.println("0");
else
System.out.println(count+"\n"+result);
}
}
相关文章
- Java实现统计方案
- Java实现 LeetCode 729 我的日程安排表 I(二叉树)
- Java实现 LeetCode 309 最佳买卖股票时机含冷冻期
- Java实现 LeetCode 98 验证二叉搜索树
- Java实现 洛谷 P1423 小玉在游泳
- java实现输入日期
- java实现硬币方案
- java实现第五届蓝桥杯大衍数列
- Java实现第八届蓝桥杯杨辉三角
- Java实现 蓝桥杯VIP 算法训练 乘法表
- Java实现 蓝桥杯VIP 算法训练 递归求二进制表示位数
- Java实现 蓝桥杯算法提高金明的预算方案
- Java实现 蓝桥杯算法提高金明的预算方案
- Java实现 蓝桥杯 算法训练 最大的算式
- Java实现 洛谷 P1064 金明的预算方案
- Java实现 洛谷 P1064 金明的预算方案
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- 老板让只懂Java基本语法的我,基于AQS实现一个锁
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet1 1.2. Python的
- Atitit 搜索蓝牙设备 powershell的实现 java noede.js python 先用脚本语言python nodejs,不好实现。。Java 也不好实现。。 Netcore可以,
- atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener
- 我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作
- EasyXLS 8.6.1 for Java -Crack
- 【java】Java并发编程--Java实现多线程的4种方式
- 【java】Java线程池实现原理及业务中的实践