acwing-843.n-皇后问题
题目描述
n−皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。
现在给定整数 n,请你输出所有的满足条件的棋子摆法。
输入格式
共一行,包含整数 n。
输出格式
每个解决方案占 n 行,每行输出一个长度为 n 的字符串,用来表示完整的棋盘状态。
其中 . 表示某一个位置的方格状态为空,Q 表示某一个位置的方格上摆着皇后。
每个方案输出完成后,输出一个空行。
注意:行末不能有多余空格。
输出方案的顺序任意,只要不重复且没有遗漏即可。
数据范围
1≤n≤9
输入样例:
4
输出样例:
.Q…
…Q
Q…
…Q.
…Q.
Q…
…Q
.Q…
题解代码如下
#include<bits/stdc++.h>
using namespace std;
const int N = 20;int n;
char g[N][N];
bool col[N],dg[N],udg[N];void dfs(int u){if(u==n){for(int i=0;i<n;i++) puts(g[i]);puts("");return;}for(int i=0;i<n;i++){if(!col[i] && !dg[u+i] && !udg[i-u+n]){g[u][i] = 'Q';col[i] = dg[u+i] = udg[i-u+n] = true;dfs(u+1);col[i] = dg[u+i] = udg[i-u+n] = false;g[u][i] = '.';}}
}int main(){scanf("%d",&n);for(int i=0;i<n;i++){for(int j=0;j<n;j++){g[i][j] = '.';}}dfs(0);return 0;
}
acwing-843.n-皇后问题相关推荐
- 【算法基础】DFS深度优先算法 —— AcWing 843. n-皇后问题 AcWing 842. 排列数字
目录
- AcWing基础算法课Level-2 第三讲 搜索与图论
AcWing基础算法课Level-2 第三讲 搜索与图论 DFS AcWing 842. 排列数字3379人打卡 AcWing 843. n-皇后问题3071人打卡 BFS AcWing 844. 走 ...
- 【AcWing 学习】图论与搜索
图论与搜索 搜索与图论 深度优先搜索 DFS 排列数字 N 皇后 宽度优先搜索 BFS 走迷宫 树和图的存储 树和图的深度优先遍历 树的重心 树和图的宽度优先遍历 图中点的层次 拓扑排序 有向图的拓扑 ...
- Acwing算法基础课学习笔记
Acwing学习笔记 第一章 基础算法 快速排序 归并排序 二分查找 前缀和与差分 差分 位运算 离散化 第二章 数据结构 单链表 双链表 栈 队列 单调栈 单调队列 KMP算法 Trie 并查集 堆 ...
- 算法基础课【合集1】
文章目录 基础算法 785. 快速排序 786. 第k个数 787. 归并排序 788. 逆序对的数量 789. 数的范围 790. 数的三次方根 791. 高精度加法 792. 高精度减法 793. ...
- 深度优先搜索和宽度优先搜索
深度优先搜索和宽度优先搜索 bfs和dfs都是遍历图的方法.dfs是不撞南墙不回头,bfs慢慢来,一层一层来. 类型 空间(h为高度) 时间(h为高度) 采用的数据结构 特点 DFS O(h) O( ...
- N皇后问题——Acwing
N 皇后问题是指将 N 个皇后放置在 N×N 棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行.同一列或同一斜线上. 在本题中,你无需解决这一难题. 你需要做的是判断我们给出的棋子摆放是 ...
- AcWing 841. 字符串哈希(字符串Hash)
题目连接 https://www.acwing.com/problem/content/843/ 思路 我们用一个数组a记录改字符串的前缀hash值,然后和前缀和类似的方法,不过注意的是,我们在计算区 ...
- Acwing算法—动态规划
目录 数字三角形模型 AcWing 898. 数字三角形 AcWing 1015. 摘花生 AcWing 1018. 最低通行费 AcWing 1027. 方格取数 AcWing 275. 传纸条 最 ...
- [AcWing算法刷题]之DFS+BFS迷宫模板(简单)
题目来源: 题库 - AcWing 目录 DFS和BFS模板题目:迷宫类 机器人的运动范围 字母 迷宫 红与黑 棋盘问题 马走日 全球变暖 DFS综合类 乘积最大(提高课) 单词接龙(提高课) 取石 ...
最新文章
- Python 2.7 将于7个月后终结,这是你需要了解的3.X炫酷新特性
- spark学习-57-Spark下Scala版HBase下的根据权重获取最真实数据
- selenium之 chromedriver与chrome版本映射表(更新至v2.43)
- 学习mysql随笔——mysql的安装启动
- 一张思维导图,让正则表达式不再难懂
- [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
- Redis实战(十三)Redis的三种集群方式
- 【ACL2021】具有可解释的、鲁棒的、并具有泛化能力的三篇问答系统相关论文
- 正则表达式最后的/i是不区分大小写的意思
- DLL文件反编译(附:工具下载链接)
- 说说知名软件的伪装和防范(下)
- 搭建 Spring Cloud Alibaba 微服务框架
- cpu_relax()函数的意义
- 【渝粤教育】 国家开放大学2020年春季 1332中文学科论文写作 参考试题
- 75道逻辑思维题及答案
- vue中下载图片到本地
- OpenCV中图像特征提取与描述
- 二本本科,银行外包开发工作 4 个月有余。聊聊外包公司工作的一些真实感受!...
- Unity牧师与魔鬼小游戏(动作分离版)
- 5个免费的项目管理工具7款最流行的在线项目管理工具
热门文章
- 在iOS或Android中集成Caffe2
- Linux 路由表详解及 route 命令详解
- 【编译原理学习笔记】2:文法与语言描述,二义性,正规文法,左/右句型,句型分析
- 【C/C++】某地刑警大队对A、B、C、D、E和F共6个嫌疑人进行作案与否的排查,存在如下6条线索:
- 珍爱生命,远离dota
- html打印当前页面的函数,js调用iframe实现打印页面内容的方法
- MCU-51:单片机蜂鸣器播放孤勇者
- Java8新特性Stream流详解
- 双系统设置成默认启动Windows的问题
- 初学者JAVA99乘法表