JasonChang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

recursion

 1 public class Solution {
 2     public ArrayList<ArrayList<Integer>> combine(int n, int k) {
 3         // IMPORTANT: Please reset any member data you declared, as
 4         // the same Solution instance will be reused for each test case.
 5         ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
 6         if(n < 1||k < 1)
 7             return null;
 8         ArrayList<Integer> list = new ArrayList<Integer>();
 9         generate(result, list, 1, n, k);
10         return result;
11     }
12     
13     private void generate(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int depth, int n, int k){
14         if(list.size() == k){
15             ArrayList<Integer> tmp = new ArrayList<Integer>();
16             tmp.addAll(list);
17             result.add(tmp);
18             return;
19         }
20         
21         for(int i=depth; i <= n; i++)
22         {
23             list.add(i);
24             generate(result, list, i+1, n, k);
25             list.remove(list.size()-1);
26         }
27     }
28 }

 

posted on 2013-11-13 15:33  JasonChang  阅读(231)  评论(0编辑  收藏  举报