ACWing n-皇后问题

通俗的讲解DFS算法(深度优先搜索)附代码示例 深度优先搜索(Depth-First Search,简称DFS)是一种用于图形和树结构的遍历算法。该算法从起始节点开始,沿着一条路径尽可能深入地探索,直到无法继续或达到目标节点为止。如果遇到无法继续前进的节点,算法会回溯到上一个节点,然后探索其他路径。假设我们有一个迷宫,目标是从起始点找到迷宫的出口。我们可以使用DFS来解决这个问题。DFS的过程可以用递归或栈来实现。 阅读详情

n−n−皇后问题是指将 nn 个皇后放在 n×nn×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。

1_597ec77c49-8-queens.png

现在给定整数 nn,请你输出所有的满足条件的棋子摆法。

输入格式

共一行,包含整数 nn。

输出格式

每个解决方案占 nn 行,每行输出一个长度为 nn 的字符串,用来表示完整的棋盘状态。

其中 . 表示某一个位置的方格状态为空,Q 表示某一个位置的方格上摆着皇后。

每个方案输出完成后,输出一个空行。

注意:行末不能有多余空格。

输出方案的顺序任意,只要不重复且没有遗漏即可。

数据范围

1≤n≤91≤n≤9

输入样例:

4

输出样例:

.Q..
...Q
Q...
..Q.

..Q.
Q...
...Q
.Q..

 

思路分析:回溯法

 

#include<bits/stdc++.h>
using namespace std;
int n;
int mp[15][15];
int dx[]= {-1,1,0,0,-1,1,-1,1};
int dy[]= {0,0,-1,1,-1,-1,1,1};
bool check(int x,int y,int op)
{
    if(x<0||x>=n||y<0||y>=n)
        return true;
    if(mp[x][y]==1)
        return false;
    return check(x+dx[op],y+dy[op],op);
}
bool fun(int x,int y)
{
    bool flag  = true;
    for(int i =0; i<8; i++)
    {
        int xx = x+dx[i];
        int yy = y+dy[i];
        flag = check(xx,yy,i);
        if(flag == false)
            return false;
    }
    return true;
}
void dfs(int x,int y,int num)
{
    if(num==n)
    {
        for(int i = 0; i<n; i++)
        {
            for(int j = 0; j<n; j++)
            {
                if(mp[i][j]==1)
                    cout<<"Q";
                else
                    cout<<".";
            }
            cout<<endl;
        }
        cout<<endl;
        return ;
    }
    for(int i = 0; i<n; i++)
    {
        if(fun(x,i))
        {
            mp[x][i]=1;
            dfs(x+1,i,num+1);
            mp[x][i]=0;
        }
    }
}
int main()
{
    cin>>n;
    dfs(0,0,0);
    return 0;
}

 

【N-Queen】N皇后问题(附完整C++代码) 问题分析 N皇后问题是比较经典的问题,它蕴含了回溯的思想,本文章利用回溯算法求解N皇后问题。 算法解析 ①本文章是逐行去搜索皇后的位置,每一行逐列检验该位置是否可以安放一个皇后,如果可以安放则记录列号;否则继续检索本行下一列。 for(int i=0;i<queenNum;i++){//一行中,逐列去检索 if(isAble(rowNum,i)){//检验该位置是否可以安放 column[rowNum] = i;//记录列号 findQueen(rowNum+1);//下一行对下 阅读详情

相关推荐

【ACWing】843. n-皇后问题

题目地址: https://www.acwing.com/problem/content/845/ nnn皇后问题,在n×nn\times nn×n的棋盘上放nnn个皇后,使得这些皇后互相不攻击。要求输出所有方案。 数据范围: 1≤n≤91\le n\le 91≤n≤9 思路是DFS。枚举每一行在哪一列放皇后。同时用三个变量分别存,哪些列已经放了皇后,还有哪些对角线已经放了皇后。对于对角线的判断,我们可以分为方向从左上到右下的对角线,和方向从右上到左下的对角线两种类型分别判断。从左上到右下的对角线,我们规定

数学、算法爱好者的博客 960

深度优先算法 DFS总结(算法详解+模板+例题)

沿着树的深度遍历树的节点,尽可能深的搜索树的分支。共 m+1 行,第 1 行为 2 个数,n 和 m,分别表示一共有 n(n≤105) 篇文章(编号为 1 到 n)以及m(m≤106) 条参考文献引用关系。一个如下的 6×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。有一个 n \times mn×m 的棋盘,在某个点 (x, y)(x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。

Alex_Fufu的博客 1万+

C++ N 皇后问题求解算法及代码

使用回溯法是一种常见的解决思路,它通过逐个尝试可能的解决方案,并在不符合条件时进行回溯,继续尝试其他可能的解决方案。对于 N 皇后问题,我们可以使用一个一维数组 queens 来表示每一行皇后的列位置,queens[i] 表示第 i 行皇后所在的列。N 皇后问题是一个经典的回溯算法问题,在一个 N×N 的棋盘上放置 N 个皇后,使得它们互相之间不能相互攻击,即任意两个皇后不会处于同一行、同一列或同一条对角线上。使用上述代码,我们可以通过输入 N 的值来求解 N 皇后问题,并打印出所有的解法。

PixelBlade的博客 856

DFS (深度优先搜索) 算法详解 + 模板 + 例题,这一篇就够了

俗称的“不撞南墙不回头算法”!!!在本篇文章中详细介绍了DFS算法的基本步骤,详解了包括,排列组合问题、n皇后问题、素数问题等DFS的基本例题,后续会不断补充例题!!!

Layman的博客 18万+

ACWing【843】n皇后问题

回溯、剪枝、dfs

qq_73704268的博客 580

题解:AcWing 843 n-皇后问题

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。输出方案的顺序任意,只要不重复且没有遗漏即可。,请你输出所有的满足条件的棋子摆法。的字符串,用来表示完整的棋盘状态。表示某一个位置的方格上摆着皇后。每个方案输出完成后,输出一个空行。表示某一个位置的方格状态为空,

团爸讲算法 393

【算法基础】DFS深度优先算法 —— AcWing 843. n-皇后问题 AcWing 842. 排列数字

Acwing算法基础课笔记 题解 AcWing 843. n-皇后问题 AcWing 842. 排列数字

Remember who you are! 5425

量子密钥分发(QKD)原理、工程实现与实战部署全解析

密钥分发是信息安全的核心基础,它解决了通信双方如何安全共享秘密密钥的难题。传统方法依赖于数学问题的计算复杂性,而量子密钥分发(QKD)则基于量子力学原理,为密钥分发提供了信息论安全的物理保障。其核心价值在于,利用量子不可克隆定理和测量坍缩原理,使得任何窃听行为都会被合法通信方检测到,从而在理论上实现无条件安全的密钥协商。这项技术特别适用于对安全性要求极高的场景,如金融数据同步、政务专网和电力系统保护。本文聚焦于量子保密通信,深入剖析了以BB84协议为代表的QKD工作原理,并详细拆解了包含单光子探测、偏振编码

weixin_29324401的博客 345

Acwing843.n-皇后问题

将N个皇后放置在N×N的国际象棋棋盘上,要求任意两个皇后不能互相攻击(即不能处于同一行、同一列或同一对角线上)。该解法通过系统性的尝试和回溯,能够高效找出所有合法解,是解决N皇后问题的标准方法。每个解决方案输出n行,每行是一个长度为n的字符串,表示棋盘的一行。:通过递归尝试在每一行放置皇后,并使用剪枝策略避免无效搜索。第一行尝试在(0,1)放皇后,标记第1列和两条对角线。共一行,包含一个整数n(1 ≤ n ≤ 9)。第四行在(3,2)放皇后,得到一个解。:O(n²),存储棋盘和标记数组。

m0_73895429的博客 520

改善电流不匹配的级联电流镜布局设计 2002

模拟金属氧化物半导体 (MOS) 集成电路的性能在很大程度上取决于匹配精度的因素。 电流镜的匹配精度在模拟 IC 性能中尤为重要。 布局技术和器件尺寸被认为是可以在很大程度上改善匹配行为的主要因素。 尽管这些信息很重要,但对这两个因素的研究或研究有限。 在本文中,我们基于 Lan 等人 [1999] 提出的简单电流镜提出了一种新的级联电流镜布局技术。 Cascode电流镜的新布局在参数梯度存在的情况下改善了匹配特性。 讨论了跨晶体管有源区域的阈值梯度对电流镜匹配特性的影响。 使用 SPICE 仿真比较了新

Srfun的博客 4228

医学图像标注工具教程——从零开始使用3D Slicer进行医学图像手动分割

3D Slicer手动分割软件下载及安装数据导入导入CT序列文件夹导入单张超声基本交互操作窗位和窗宽的调整改变切片及寻找特定点对应的三维切片图像分割功能介绍PaintDrawEraseLevel tracingGrow from seedsFill between slicesThreshold & Margin & HollowSmoothingScissors & IslandsLogical operator分割结果的保存 软件下载及安装 下载地址:官网的4.11.0版本 数据

神仙院B栋4楼保安的博客 1万+

【题解-Acwing】843. n-皇后问题

n−皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。每个解决方案占 n 行,每行输出一个长度为 n 的字符串,用来表示完整的棋盘状态。其中 . 表示某一个位置的方格状态为空,Q 表示某一个位置的方格上摆着皇后。现在给定整数 n,请你输出所有的满足条件的棋子摆法。输出方案的顺序任意,只要不重复且没有遗漏即可。每个方案输出完成后,输出一个空行。注意:行末不能有多余空格。共一行,包含整数 n。

写代码的犄角旮瘩 481

放弃FFT全频计算!在STM32F407上用DFT单点计算提速50%的优化技巧

本文详细介绍了在STM32F407上通过DFT单点计算实现比FFT快50%的优化技巧,特别适用于生物阻抗分析、振动监测等只需关注单一频点的嵌入式场景。通过预计算相位角、查表法和混合精度计算等策略,显著提升计算效率和内存利用率,同时保持高精度。

weixin_28738397的博客 191

AcWing 843. n-皇后问题【DFS】【剪枝】

AcWing 843. n-皇后问题【DFS】【剪枝】

Derrickhang的博客 717

SecureCRT串口连接保姆级教程:从驱动安装到波特率设置(附常见问题解决)

本文提供SecureCRT串口连接的保姆级教程,涵盖从USB转串口驱动安装、端口识别到波特率等核心参数设置的完整流程。针对连接失败、乱码、键盘输入无响应等高频问题,给出了深度排查与解决方案,帮助网络与嵌入式开发新手快速掌握串口调试技能。

weixin_29281941的博客 433

ANSYS Workbench接触分析实战:从算法选择到收敛难题破解

本文深入解析ANSYS Workbench接触分析的核心技术与实战技巧,涵盖四大接触算法选择、收敛难题破解秘籍及典型场景参数设置。通过实际案例演示如何优化接触刚度、pinball区域和非对称行为等关键参数,帮助工程师有效解决结构非线性问题,提升仿真效率和精度。

weixin_28705087的博客 358

Acwing 1621. N 皇后问题

原题链接:Acwing 1621. N 皇后问题 这道题开始交上去的时候4个测试点只过了3个,后来才发现原因: 本题是随机给的一段序列,所以我们要判断的不只是每一个皇后是否在一个对角线上,还要判断是否是同一行,上一道8皇后问题:Acwing 3472. 八皇后 递归回溯优化在判断的时候条件只有“是否在一个对角线”,因为它每一次枚举的时候已经排除了“皇后是同一行”的情况,注意这两道题的区别,写题的时候要细心。 #include <bits/stdc++.h> using namespace std

想买很多漂亮衣服但是买不起的博客 273

编织数据的实时脉络——构建基于MySQL的数据编织平台,实现实时数据治理

除了上述基本设置外,我们还可以根据实际应用场景自定义一些特定的监控项目。例如,对于某些高并发读写的表,可能需要特别关注它们的锁等待时间和回滚段使用率;而对于涉及到跨库关联查询的操作,则应当着重检查网络延迟及缓存命中率等因素。-- 获取InnoDB行级锁等待情况-- 统计各表的缓存命中率这段SQL脚本不仅展示了如何查询InnoDB引擎下的锁争用状况,还介绍了计算表级别缓存命中率的方法,有助于深入理解系统的运行状态。

墨夶的博客 1789

N皇后问题——Acwing

N 皇后问题是指将 N 个皇后放置在 N×N 棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。,QN来表示一种棋盘摆放,其中 Qi表示第 i 列的皇后所在的行号。你需要做的是判断我们给出的棋子摆放是否是一种合理的摆放方案,即是否能够满足皇后之间不能相互攻击到。每组测试数据占一行,首先包含整数 N,然后包含 N 个整数 Q1,Q2,…为了简化棋盘的表示,让我们假设在同一列中不会放置两个皇后。来表示,它是解决八皇后问题的一种合理摆放方案。解决九皇后问题的一种合理摆放方案。

m0_72556509的博客 198

Yolov5自定义图片训练测试及模型调优(详细过程)

Yolov5自定义数据训练及测试1. 图像数据获取、标注2. 数据集划分及准备3. 配置训练参数,准备训练:3.1 修改data/训练配置xxx.yaml文件:3.2 修改models模型配置xxx.yaml文件4. 开始训练5. 测试训练后的模型: 1. 图像数据获取、标注 如果自定义训练自己的数据集,首先需要数据标注,至于数据来源可以是下载现有的开发数据集、拍照、爬虫等等。 如果是拍照、爬虫等获取的数据图片,需要进行数据标注,这个过程可以使用工具来做,但也需要一些手动操作 。。并且图片越多越好,如果

HowieXue 薛永浩的博客 10万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

AcWing 1621 N 皇后问题

题目 NN 皇后问题是指将 NN 个皇后放置在 N×NN×N 棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 在本题中,你无需解决这一难题。 你需要做的是判断我们给出的棋子摆放是否是一种合理的摆放方案,即是否能够满足皇后之间不能相互攻击到。 为了简化棋盘的表示,让我们假设在同一列中不会放置两个皇后。 这样我们就可以用一个整数序列 Q1,Q2,…,QNQ1,Q2,…,QN 来表示一种棋盘摆放,其中 QiQi 表示第 ii 列的皇后所在的行号。 例如,下方左图的棋盘摆放可以

sehnsucht 256

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

AcWing 843. n-皇后问题

原题链接如下: AcWing 843. n-皇后问题 来自y总算法基础课第三讲搜索与图论,而n-皇后问题众所周知是dfs的典型问题 原题详细如下: n− 皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n,请你输出所有的满足条件的棋子摆法。 输入格式 共一行,包含整数 n。 输出格式 每个解决方案占 n 行,每行输出一个长度为 n 的字符串,用来表示完整的棋盘状态。 其中 . 表示某一个位置的方格状态为空

m0_51691373的博客 808

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

DFS深度优先算法 —— AcWing 842. 排列数字AcWing 843. n-皇后问题

用排列数字和n皇后问题彻底搞懂dfs的回溯和剪枝

m0_68055637的博客 1366

acwing843.n皇后问题

每个解决方案占 n行,每行输出一个长度为 n的字符串,用来表示完整的棋盘状态。其中 . 表示某一个位置的方格状态为空,Q 表示某一个位置的方格上摆着皇后。dfs处理每一层,对于每一层for(i~n)找到可以填充的位置,然后递归进入下一层。递归到最深处返回(u > n),返回上一层时候要将当前层做的标记、处理 进行恢复。n−皇后问题是指将 n个皇后放在 n×n的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数 n,请你输出所有的满足条件的棋子摆法。

qq_44630195的博客 336

[AcWing]AcWing 843. n-皇后问题(C++实现)

[AcWing]AcWing 843. n-皇后问题(C++实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路:全排列的思想,在每一行中,判断这列col、斜线dg,反斜线udg是否存放了queen,如果存放了,就不能再放了;否则可以放,然后将其对应的col、dg、udg都置为true,表示已经放了一个queen了。 3. 解法 -------------------------

cloud的博客 1070
上一篇: 洛谷P2437 蜜蜂路线 (递推+大数加法)
下一篇: 二分查找及其变式模板
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值