N 皇后问题是指在 n * n 的棋盘上要摆 n 个皇后,
要求:任何两个皇后不同行
,不同列
也不在同一条斜线
上,
求给一个整数 n ,返回 n 皇后的摆法数。
数据范围: 1 ≤ n ≤ 9
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 20; int n; char map[N][N]; bool col[N], dg[N], udg[N]; void dfs(int x){ if (x == n + 1){ for(int i = 1; i <= n;i++){ for (int j = 1; j <= n; j ++ ) printf("%c", map[i][j]); puts(""); } puts(""); } for(int i = 1; i <= n;i++){ if (!col[i] && !dg[n - x + i] && !udg[x + i]){ col[i] = dg[n - x + i] = udg[x + i] = true; map[x][i] = 'Q'; dfs(x + 1); col[i] = dg[n - x + i] = udg[x + i] = false; map[x][i] = '.'; } } } int main(){ scanf("%d", &n); for (int i = 1; i <= n; i ++ ) for (int j = 1; j <= n; j ++ ) map[i][j] = '.'; dfs(1); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下