AcWing 94. 递归实现排列型枚举
原题链接
简单
作者:
疯子orz
,
2024-04-10 18:39:46
,
所有人可见
,
阅读 4
import java.util.Scanner;
public class Main {
static int n;
static int[] a;//存放已经枚举过的数组元素,0表示还没有存放
static boolean[] st;//判断这个数是否已经被枚举
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
a = new int[n + 1];
st = new boolean[n + 1];
dfs(1);
}
private static void dfs(int u) {
// TODO Auto-generated method stub
if (u > n) {
for (int i = 1; i <= n; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
return;
}
for(int i = 1;i <= n;i ++) {
if(!st[i]) {
st[i] = true;//先改变这个状态
a[u] = i;//赋值
dfs(u + 1);//递归下一层
//恢复现场
a[u] = 0;
st[i] = false;
}
}
}
}