843. n-皇后问题 n−皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上使得皇后不能相互攻击到即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数 n请你输出所有的满足条件的棋子摆法。输入格式共一行包含整数 n。输出格式每个解决方案占 n 行每行输出一个长度为 n 的字符串用来表示完整的棋盘状态。其中.表示某一个位置的方格状态为空Q表示某一个位置的方格上摆着皇后。每个方案输出完成后输出一个空行。注意行末不能有多余空格。输出方案的顺序任意只要不重复且没有遗漏即可。数据范围1≤n≤9输入样例4输出样例.Q.. ...Q Q... ..Q. ..Q. Q... ...Q .Q..代码#includeiostream using namespace std; const int N20; int n; char g[N][N]; bool col[N],dg[N],udg[N];//分别为 列副对角线右上到左下主对角线左上到右下 void dfs(int u) { if(un) { for(int i0;in;i) { puts(g[i]); } puts(); return; } for(int i0;in;i) { if(!col[i]!dg[ui]!udg[n-ui])//检查是否冲突 { g[u][i]Q; col[i]dg[ui]udg[n-ui]true;//标记 dfs(u1); col[i]dg[ui]udg[n-ui]false;//回溯删除标记 g[u][i].;//棋盘显示恢复 } } } int main() { cinn; for(int i0;in;i) { for(int j0;jn;j) { g[i][j].; } } dfs(0); return 0; }