1 import java.util.ArrayList;
2 import java.util.Arrays;
3
4
5 public class Combination {
6
7 public static ArrayList<ArrayList<Integer>> combine(
int n,
int k) {
8 ArrayList<ArrayList<Integer>> res =
new ArrayList<ArrayList<Integer>>
();
9 if(n <= 0||n <
k)
10 return res;
11 ArrayList<Integer> item =
new ArrayList<Integer>
();
12 dfs(n,k,1,item, res);
//because it need to begin from 1
13 return res;
14 }
15
16 private static void dfs(
int n,
int k,
int start, ArrayList<Integer> item, ArrayList<ArrayList<Integer>>
res){
17 if(item.size()==
k){
18 res.add(
new ArrayList<Integer>(item));
//because item is ArrayList<T> so it will not disappear from stack to stack
19 System.out.println(item);
20 return;
21 }
22 for(
int i=start;i<=n;i++
){
23 System.out.println(i);
24 item.add(i);
25 dfs(n,k,i+1
,item,res);
26 System.out.println(i);
27 item.remove(item.size()-1
);
28 System.out.println(item);
29
30 }
31 }
32
33 public static void main(String[] args)
34 {
35 ArrayList<ArrayList<Integer>> res =
new ArrayList<ArrayList<Integer>>
();
36 res=combine(3,2
);
37 System.out.println(res);
38
39 }
40
41 }
1
2
[1, 2
]
2
[1
]
3
[1, 3
]
3
[1
]
1
[]
2
3
[2, 3
]
3
[2
]
2
[]
3
3
[]
[[1, 2], [1, 3], [2, 3]]
转载于:https://www.cnblogs.com/hygeia/p/4629793.html
相关资源:JAVA上百实例源码以及开源项目