递归法
假设我们有0,1,2,3四个数需要全排列,递归法是一种比较类似于深度搜索的方法,直到递归最深处,才得出结果。
其大概思路是,设置一个游标start
,游标所到之处,其左侧已经考虑过,利用递归思想求剩下的全排列。
仔细分析,依次考虑每一位数。由于对于每一位数,它可能的数包括除了之前考虑过的所有数,因此将start
右侧(包括start
)的所有数都和start
这一位交换一次,每交换后,马上进入递归函数(start+1
),接着再执行一次原交换,用于复原。这样就做成了把每一个数都在这个位上排列一次,递归函数的调用表示对剩下的数进行全排列。
代码如下:
package main;
public class Main {
static int[] a = {
0, 1, 2, 3};
static int result = 0;
public static void main(String[] args) {
dfs(0);
System.out.println("The total of all permutation of a[] is: " + result);
}
public static void dfs(int start) {
if (start >= a.length) {
System.out.print(a[0]);
for (int i = 1; i < a.length; i++) {
System.out.print(