购物券消费方案 公司发了某商店的购物券1000元,限定只能购买店中的m种商品。 每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。

/*	购物券消费方案
公司发了某商店的购物券1000元,限定只能购买店中的m种商品。
每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。
程序输入:
第一行是一个整数m,代表可购买的商品的种类数。
接下来是m个整数,每个1行,分别代表这m种商品的单价(0 lis = new ArrayList();
	public static void print(){
		for(int[] x:lis){
			for(int y:x){
				System.out.print(y+"  ");
			}
			System.out.println();
		}
	}
	// 上次记录的结果,和当前这次记录比较是否相同
	public static boolean compare(int[] t){
		if(temp==null) return false;
		for(int i=0;i=b.length) return;
		for(int i=0;i<=b[count];i++){
			t[count] = i;	// 保存当前i的值
			f(n,b,t,count+1);	// 迭代
			if(!compare(t)){	// 去重
				if(check(n,t)){	// 检测符合条件的组合 将数组添加到lis列表 
					lis.add(Arrays.copyOf(t, t.length));
				}
			}// 用temp记录结果,下次比较是否相同用(去重)
			temp = Arrays.copyOf(t, t.length);
		}
	}
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		System.out.println("输入商品的种类数");
		int num = scan.nextInt();
		int[] n = new int[num];	// 保存商品价格
		int[] b = new int[num];	// 保存每个商品最多有几个
		for(int i=0;i
运行结果:
输入商品的种类数
2
200
300
2
2  2  
5  0  

你可能感兴趣的:(java算法)