先放一张老师给的DFS算法模板图
乘着老师刚讲完题目赶紧记录下来
输入一个数N,输出从1~N的全排列
import java.util.Scanner;
public class Main{
static int n;
static int[] arr;//用来记录已经在排列中的数字
static int[] brr;//标记
static void dfs(int step) {
if(step==n) {//边界输出
for(int i=0;i<n;i++)
System.out.print(arr[i]+" ");
System.out.println();
}else if(step<n) {
for(int i=1;i<=n;i++) {//每一次循环都将i作为第一个数进行排列
if(brr[i]==0) {//判断是否重复,相当于check方法是否满足条件
brr[i] = 1;//标记已经使用
arr[step] = i;
dfs(step+1);//进行下一步
brr[i] = 0;//清空标记
}
}
}else return;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
arr = new int[n+1];
brr = new int[n+1];
dfs(0);
}
}