AcWing 842. 排列数字
原题链接
简单
作者:
当下LYC
,
2024-01-17 15:43:30
,
所有人可见
,
阅读 28
题目描述
样例
import java.util.*;
public class Main{
static int N = 10,n;//N必须是10才可吗???
static int[] path = new int[N];
static boolean[] flag = new boolean[N];
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
Dfs(0);
sc.close();
}
public static void Dfs(int u){
if(u == n){
for(int i = 0 ; i < n ; i++) System.out.print(path[i] + " ");
System.out.println();
return;
}
for(int i = 1 ; i <= n ; i++){//赋值操作
if(!flag[i]){//是true说明已经被访问过了,当没有被访问过时走入.
path[u] = i;
flag[i] = true;//这条路被走过了;
Dfs(u + 1);//回溯的操作
//一下两步物归原主
path[u] = 0;
flag[i] = false;
}
}
}
}