package com.raylew.algorithm.book1;
import java.util.Arrays;
public class 组合问题 {
public static int N = 3;
public static int goal = 10;
public static int total = 0;
public static int[] arr = {2, 3, 6, 7};
public static int[] res = new int[1000];
public static void main(String[] args) {
dfs(0);
System.out.println(total);
}
public static void dfs(int cur) {
int sum = 0;
for (int i = 0; i < cur; i++) {
sum += res[i];
}
if (sum >= goal) {
if (sum == goal) {
total++;
for (int i = 0; i < cur; i++) {
System.out.print(res[i] + ",");
}
System.out.println();
}
return;
}
int index = Arrays.binarySearch(arr, 2);
for (int i = index; i < N; i++) {
if (cur == 0) {
res[cur] = arr[i];
dfs(cur + 1);
} else {
if (arr[i] >= res[cur - 1]) {
res[cur] = arr[i];
dfs(cur + 1);
}
}
}
}
}