"全排列"是数学中的一个概念,指的是从给定集合中取出所有元素的所有排列方式。在这个问题中,我们需要实现一个方法,该方法能够生成数字1、2和3的所有全排列。
以下是一个简单的Java实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
List<List<Integer>> permute = permute(nums);
for (List<Integer> integers : permute) {
System.out.println(integers);
}
}
public static List<List<Integer>> permute(int[] nums) {
List<List<Integer>> output = new ArrayList<>();
ArrayList<Integer> nums_list = new ArrayList<Integer>();
for (int num : nums) {
nums_list.add(num);
}
int n = nums.length;
backtrack(n, nums_list, output, 0);
return output;
}
public static void backtrack(int n, ArrayList<Integer> nums, List<List<Integer>> output, int first) {
if (first == n) {
output.add(new ArrayList<Integer>(nums));
}
for (int i = first; i < n; i++) {
Collections.swap(nums, first, i);
backtrack(n, nums, output, first + 1);
Collections.swap(nums, first, i);
}
}
}
这个程序首先创建一个包含1、2和3的数组,然后通过permute
方法计算全排列。permute
方法使用回溯算法来生成所有可能的排列,每次递归地交换数组中的两个元素,直到所有的元素都被交换过。最后,将生成的排列添加到结果列表中。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。