Problem
电池有6节包装,9节包装,20节包装三种,input需要多少节电池,如果可以刚好用3种包装的凑到这个数,就输出这个解, 忘了是不是要输出所有的解。
e.g 输入20, 答{20} 输入17 答没有 输入18,那可能是{6,6,6}也可能是{9,9}。 有点像找钱的问题,似乎是从集合中找到所有集合值等于一个target这个题的简化版,因为集合只有6 9 20。Solution
1 public static List
> combination(int[] num, int target) { 2 List
> res = new ArrayList
>(); 3 4 if(num == null || num.length == 0) return res; 5 6 List path = new ArrayList (); 7 helper(num, target, res, path); 8 return res; 9 10 }11 12 public static void helper(int[] num, int target, List
> res, List path) {13 14 if(target == 0) {15 res.add(new ArrayList (path));16 return;17 }18 19 if(target < 0)20 return;21 22 for(int i=0; i