xxx
结果是正确的,应该是输出那里的空格多少的问题导致提交失败
import java.util.Scanner;
class Main{
private static int N = 20;
private static char g[][] = new char[N][N]; //存储方案
private static boolean[] col = new boolean[N]; //行
private static boolean[] dg = new boolean[N]; //正对角线
private static boolean[] udg = new boolean[N]; //反对角线
private static int n;
public static void dfs(int u){
if(u == n){
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j ++){
System.out.print(g[i][j] + " ");
}
System.out.println();
}
System.out.println();
// return;
}
for(int i = 0; i < n; i ++){
if(col[i] == false && dg[u + i] == false && udg[n - u + i] == false){
g[u][i] = 'Q';
dg[u + i] = true;
col[i] = true;
udg[n - u + i] = true;
dfs(u + 1);
g[u][i] = '.';
udg[n - u + i] = false;
dg[u + i] = false;
col[i] = false;
}
}
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
n = in.nextInt();
for(int i = 0; i < n; i ++){
for(int j = 0; j < n; j ++){
g[i][j] = '.';
}
}
dfs(0);
}
}