递归

 
public class Recursion {
	public static void main(String[] args) {
		int[] nums = { 1, 2, 3 };
		Recursion recursion = new Recursion();
		List<List<Integer>> permute = recursion.permute(nums);
		System.out.println(permute.toString());
	}
	public List<List<Integer>> permute(int[] nums) {
		List<List<Integer>> list = new ArrayList<>();
		swap(list, nums, 0);

		return list;
	}

	public List<Integer> swap(List<List<Integer>> list, int[] nums, int k) {
		if (k >= nums.length - 1) {
			List<Integer> miniList = new ArrayList<>();
			for (int i = 0; i < nums.length; i++) {
				miniList.add(nums[i]);
			}
			list.add(miniList);
			return null;
		}
		for (int i = k; i < nums.length; i++) {
			int temp = nums[i];
			nums[i] = nums[k];
			nums[k] = temp;
			swap(list, nums, k + 1);
			temp = nums[i];
			nums[i] = nums[k];
			nums[k] = temp;
		}

		return null;
	}
}
 
 
 
36
 
 
1
public class Recursion {
2
public static void main(String[] args) {
3
int[] nums = { 1, 2, 3 };
4
Recursion recursion = new Recursion();
5
List<List<Integer>> permute = recursion.permute(nums);
6
System.out.println(permute.toString());
7
}
8
public List<List<Integer>> permute(int[] nums) {
9
List<List<Integer>> list = new ArrayList<>();
 
 
10
swap(list, nums, 0);
11

12
return list;
13
}
14

15
public List<Integer> swap(List<List<Integer>> list, int[] nums, int k) {
16
if (k >= nums.length - 1) {
17
List<Integer> miniList = new ArrayList<>();
18
for (int i = 0; i < nums.length; i++) {
19
miniList.add(nums[i]);
20
}
21
list.add(miniList);
22
return null;
23
}
24
for (int i = k; i < nums.length; i++) {
25
int temp = nums[i];
26
nums[i] = nums[k];
27
nums[k] = temp;
28
swap(list, nums, k + 1);
29
temp = nums[i];
30
nums[i] = nums[k];
31
nums[k] = temp;
32
}
33

34
return null;
35
}
36
}
 
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





posted @ 2018-01-09 17:37  1anMoone  阅读(50)  评论(0)    收藏  举报