组合求和问题(java实现)
题设
题目分析
举例图解
java代码实现
package com.bingym.algorithm.mergenum;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MergeNumDemo {
static int num[] = {0,1,2,3,4,5,6,7,8,9};
public static void main(String[] args) {
List<List<Integer>> list = combinationSum3(3, 7);
System.out.println(list);
}
public static List<List<Integer>> combinationSum3(int k, int n) {
List<List<Integer>> list = new ArrayList<>();
List<Integer> nums = new ArrayList<>();
setNum(1,k,n,nums,list);
return list;
}
private static void setNum(int index, int k, int n,List<Integer> nums,List<List<Integer>> list) {
if (nums.size() == k || n <= 0) {
if (nums.size() == k && n ==0) {
list.add(new ArrayList<>(nums));
return;
}
return;
}
for (int i = index; i <= 9; i++) {
nums.add(num[i]);
setNum(i+1,k,n-num[i],nums,list);
nums.remove(nums.size() - 1);
}
}
}