洛谷链接:https://www.luogu.org/problem/P1219
import java.util.Scanner;
public class Main {
static int n,sum;
static int[] ans=new int[50];
static boolean[][] flag=new boolean[4][50];
static void dfs(int i) {
if(i>n) {
sum++;
if(sum>3) {
return;
}
for(int k=1;k<=n;k++) {
System.out.print(ans[k]+" ");
}
System.out.println();
}
for(int j=1;j<=n;j++) {
if(!flag[1][j] && (!flag[2][i+j]) && (!flag[3][i-j+n])) {
ans[i]=j;
flag[1][j]=true;
flag[2][i+j]=true;
flag[3][i-j+n]=true;
dfs(i+1);
flag[1][j]=false;
flag[2][i+j]=false;
flag[3][i-j+n]=false;
}
}
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
n=in.nextInt();
dfs(1);
System.out.println(sum);
}
}