题目描述
全排列问题
JAVA 代码
import java.util.*;
class Main{
static int N = 10, n;
static int[] path = new int[N];
static boolean[] st = new boolean[N];
static void dfs(int u){
//如果位置满了的话, 就打印
if(u==n){
for(int i = 0; i<n; i++){
System.out.print(path[i] + " ");
}
System.out.println();
return;
}
//位置没满,从 path[0]个开始
for(int i = 1; i<= n; i++){
if(!st[i]){
// 在位置上放值
path[u] = i;
st[i] = true; //不能再放了.
dfs(u+1);
st[i] = false;//回复现场
//本来path[u] 也得回复,不过之后会覆盖.所以可以省
}
}
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
dfs(0);
}
}