组合求和

28 阅读1分钟
/**
 * 双递归
 * 全排列
 */
public static void permutation(int[] array,int length,int idx,int sum,Deque<Integer> deque,List<Deque<Integer>> list){
    if(idx==length)return;
    if(Integer.compare(sum,0)==0){
        list.add(deque);
    }
    permutation(array,length,idx+1,sum,deque,list);
    if(sum-array[idx]>=0){
        deque.add(array[idx]);
        permutation(array,length,idx,sum-array[idx],new ArrayDeque<>(deque),list);
        deque.removeLast();
    }

}