码迷,mamicode.com
首页 > 其他好文 > 详细

254. Factor Combinations

时间:2016-08-11 06:23:50      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

就是backtracking

 1     public List<List<Integer>> getFactors(int n) {
 2         List<List<Integer>> res = new ArrayList<List<Integer>>();
 3         helper(res, new ArrayList<Integer>(), n, 2);
 4         return res;
 5     }
 6     
 7     private void helper(List<List<Integer>> res, List<Integer> item, int n, int start) {
 8         for(int i = start; i * i <= n; i++) {
 9             if(n % i == 0) {
10                 item.add(i);
11                 List<Integer> curComb = new ArrayList<Integer>(item);
12                 curComb.add(n / i);
13                 res.add(curComb);
14                 helper(res, item, n / i, i);
15                 item.remove(item.size() - 1);
16             }
17         }
18     }

要注意的是

helper函数需要有一个int start记录开始的点,不然比如说分解12的时候会有重复,[2,2,3],[3,2,2]会变成两组加进去,所以每次分解的时候不能比上一次的factor大

254. Factor Combinations

标签:

原文地址:http://www.cnblogs.com/warmland/p/5759502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!