AcWing 823. 排列
原题链接
困难
Java代码
import java.util.*;
import java.io.*;
public class Main{
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main (String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] ways = new int[n];
boolean[] states = new boolean[n];
dfs(ways, states, n, 0);
}
public static void dfs(int[] ways, boolean[] states, int n, int pos) throws Exception{
if(pos == n){
for(int i = 0; i < n; i ++){
if(states[i]){
bw.write(ways[i] + " ");
}
}
bw.write("\n");
bw.flush();
return;
}
for(int i = 0; i < n; i ++){
if(!states[i]){
states[i] = true;
ways[pos] = i + 1;
dfs(ways, states, n, pos + 1);
states[i] = false;
}
}
}
}