public static void main(String[] args) {
int count = 0;
for (int a = 0; a <= 15; a++) {
for (int b = 0; b <= 7; b++) {
for (int c = 0; c <= 3; c++) {
for (int d = 0; d <= 1; d++) {
if ((1 * a + 2 * b + 5 * c + 10 * d ) == 15) {
count++;
}
}
}
}
}
System.out.println(count);
}
方法2
public class test {
private static int[] array = new int[]{1, 2, 5, 10};
private static int count = 0;
private static int max = 15;
public static void main(String[] args) {
residue(max, 0);
System.out.println(count);
}
private static void residue(int residue, int index) {
out:
for (; index < array.length; index++) {
for (int i = 1; i * array[index] <= residue; i++) {
if (i * array[index] == residue) {
count++;
continue out;
} else {
int temp = residue - i * array[index];
if (index + 1 < array.length) {
residue(temp, index + 1);
}
}
}
}
}
}