最后一道题 花了一个多小时想出来的!!!!!!!!!!!!!!! public class 数组排列求和Demo { public static void main(String[] args) { int[] question= {1,3,8,2,7,9,5,4,1,5,4,1,2,2,3}; ArrayList ans = new ArrayList(); 数组排列求和Demo m = new 数组排列求和Demo(); m.calculation(question,ans,16,0,0); } /** * 求数组中所有和为target的集合 * 递归方法,回溯方法 * @param q 给定一个数组 * @param ans 展示可能性的链表 * @param target 问题 * @param i 表示层数,必须输入0 * @param sum 表示当前总数,必须输入0 */ public void calculation(int[]q,ArrayList ans , int target,int i,int sum) { for(int t = i;t<q.length;t++){ if(sum+q[t]>target){continue;} if(sum+q[t]==target){ ans.add(q[t]); System.out.println(ans); ans.remove(ans.size()-1); } ans.add(q[t]); sum+=q[t]; calculation(q,ans,target,t+1,sum); //判断 ans.remove(ans.size()-1); sum-=q[t]; } }