第三题解法
时间: 2023-06-22 13:17:38 浏览: 88
解题思路3
以下是全排列问题的Java递归解法:
```java
import java.util.Arrays;
public class Permutations {
public static void permute(int[] nums, int start, int end) {
if (start == end) {
System.out.println(Arrays.toString(nums));
} else {
for (int i = start; i <= end; i++) {
swap(nums, start, i);
permute(nums, start + 1, end);
swap(nums, start, i);
}
}
}
public static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
public static void main(String[] args) {
int[] nums = {1, 2, 3};
permute(nums, 0, nums.length - 1);
}
}
```
输出结果:
```
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
```
其中,nums为要排列的数组,start为当前排列的起始位置,end为当前排列的结束位置。如果start等于end,说明已经排列完毕,输出当前排列结果;否则,从start到end依次将每个元素与start位置的元素交换,然后递归排列剩余元素,完成后将交换的元素交换回来,继续排列其它元素。
阅读全文