
/**
* @description:
*
* 输入:[1,2,4] sum=4
*
* 输出:[1,1,1,1]
* [1,1,2]
* [2,2]
*
* @author: Xu chunfa
* @create: 2019-04-06 21:25
**/
public class CombineSum {
private ArrayList<Integer> combine = new ArrayList<>();
private ArrayList<ArrayList<Integer>> allCombine = new ArrayList<>();
public ArrayList<ArrayList<Integer>> findCombination(int[] array,int sum,int i){
if(sum < 0){
return allCombine;
}
if(sum == 0){
allCombine.add(new ArrayList<>(combine));
return allCombine;
}
while(i < array.length && sum - array[i] >= 0){
combine.add(array[i]);
//findCombination(array,sum-array[i],i+1);
findCombination(array,sum-array[i],i);
i++;
combine.remove(combine.size()-1);
}
return allCombine;
}
@Test
public void test(){
int[] a = {1,4,4,2,6};
Arrays.sort(a);
System.out.println(findCombination(a,10,0).toString());
}
}
近期评论