import java.util.Scanner;
public class Demo05 {
private static int[] shop;
private final static int total = 1000;
static int count = 0;
public static void main(String[] args) {
input();
cal(0, 0, "");
System.out.println(count);
}
public static boolean cal(int tt, int index, String numStr) {
if (tt == total) // 如果计算出的总和正好等于total返回true;
return true;
if (index == shop.length) // index超出 shop.length 返回false
return false;
int snum = 0; // 当前index数据的数量
int tmp; // 临时变量
// 使用tt + 当前index数据乘上数量 , 只有t小于otal时才循环。
while ((tmp = tt + shop[index] * snum++) <= total) {
// 保存当前index数据的数量。
String nStr = numStr + (snum - 1) + " ";
// 使用新的参数递归调用
boolean b = cal(tmp, index + 1, nStr);
if (b) {
count++;
System.out.println(nStr);
}
}
return false;
}
public static void input() {
Scanner scan = new Scanner(System.in);
System.out.println("输入商品个数: ");
try {
int num = scan.nextInt();
shop = new int[num];
for (int i = 0; i < num; i++) {
System.out.print("输入" + (i + 1) + "商品价格: ");
shop[i] = scan.nextInt();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个输出的格式不对啊。。。。