找出可能的合的组合
描述
给出一组不重复的正整数,从这组数中找出所有可能的组合使其加合等于一个目标正整数 N,如:
一组数为 1, 2, 3,目标数为 4,那么可能的加合组合为:
1, 1, 1, 1
1, 1, 2
1, 2, 1
1, 3
2, 1, 1
2, 2
3, 1
注意相同的组合数字顺序不同也算一种,所以这个例子的结果是 7 种。
输入
一组不重复的正整数(, 隔开)以及目标正整数(与数组用空格隔开)
输出
所有可能的加合等于目标正整数 N 的组合种数
输入样例
1,2,3 4
输出样例
7
private static String solution(String line) { // 在此处理单行数据 String[] parts = line.split(" "); String[] src = parts[0].split(","); int[] arr = new int[src.length]; for (int i = 0; i < src.length; ++i) { arr[i] = Integer.parseInt(src[i]); } int result = fun(arr,Integer.parseInt(parts[1])); return String.valueOf(result); } public static int fun(int[] arr,int t) { int count = 0; for (int a : arr) { if (t == a) { count ++; } else if (t > a) { count += fun(arr,t - a); } } return count; }