1214:八皇后 深度优先搜索算法

1214:八皇后

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 22901 通过数: 14116
【题目描述】
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 × 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。

对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…b8
,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。

给出一个数b,要求输出第b个串。串的比较是这样的:皇后串x置于皇后串y之前,当且仅当将x视为整数时比y小。

【输入】
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数b(1≤b≤92)。

【输出】
输出有n行,每行输出对应一个输入。输出应是一个正整数,是对应于b的皇后串。

【输入样例】
2
1
92
【输出样例】
15863724
84136275

1214 八皇后串

内容和前面相似,但是注意:

  • 由样例可以看出,该题目是需要按行搜索,先第一行的皇后确定了再确定第二行
  • 给出的数没有明显的大小关系,所以需要每次输入后就要搜索,
  • 由于深度搜索的本质是:先选择某一种可能情况开始搜索,在搜索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向下搜索,如此反复进行,直至得到解或证明无解,
    • 所以每次回溯时不是回到第一步,而是回溯到上一步,(哪怕已经找到了八个皇后的位置还是会回到上一步),所以num增加,但是每一次都会更新a[1] ~ a[8]的值,而是从回溯到上一个节点时开始更新值(所以试图用二维数组去存储1~92个搜索的结果的,是错的!!!!!血的教训!,而且哪怕说每次找到了八个皇后我就开始将数组设置一遍,但是这个可能也行不通,因为你无法去判断该num次的搜索时,是回溯到了哪一行,所以很麻烦,不建议!)
    • 这样要想拿到数字串也不难,那就输入一个数字就深搜一遍,然后就直接输出就行

代码示例:

#include<bits/stdc++.h>
using namespace std;
int n=8,num=1,k;
int a[9]={0};
void dfs(int l);
int check(int l);//判断同一列/同一行/一条斜线上是否已经有皇后,传入参数为第几行 
void print();
int main(){int m;cin>>m;while(m){cin>>k;
//		cout<<k<<endl; dfs(1);num=1;m--;}return 0;
} 
void print(){
//	按行输出 for(int i=1;i<=n;i++){cout<<a[i];}cout<<endl;}
void dfs(int l){//先判断是否需要结束该次遍历if(l==n+1){
//		cout<<num<<endl; if(num==k) 	print();num++;return ;}else{//先循环遍历,i表示第几列 for(int i=1;i<=n;i++){a[l]=i;//直接先赋值,否则会出错 (他会往下继续判断,然后再搜索下一行,如果该位置判断有问题,会回退到上一行,)if(check(l)){  //判断 dfs(l+1);}}return;}
}
int check(int l){for(int i=1;i<l;i++){  //即在l-1行才确定皇后的位置,后面的就不需要遍历判断了 ||(a[i]+i==k+l)if((a[i]==a[l])||(abs(a[i]-a[l])==abs(i-l))) { //a[l]表示的当前行所在列(k), return 0;}} return 1; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度生成模型之GAN的评估 ->(个人学习记录笔记)

文章目录 深度生成模型之GAN的评估图像翻译的应用1. 风格迁移2. 数据增强3. 经典图像任务4. 内容创作5. 人脸图像编辑6. 人体图像编辑 图像翻译模型1. 有监督图像翻译模型2. 无监督图像翻译模型3. 多域图像翻译模型 深度生成模型之GAN的评估 图像翻译的应用 1. 风格迁移 各类…

2024年腾讯云服务器租用价格表_优惠活动大全_实时更新

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

NA原理及配置

在IP地址空间中&#xff0c;a&#xff1b;b&#xff1b;c类地址中各有一部分地址&#xff0c;被称为私有IP地址&#xff08;私网地址&#xff09;&#xff0c;其余的为公有IP地址&#xff08;公网地址&#xff09; A&#xff1a;10.0.0.0 - 10.255.255.255 --- 相当于1条A类网段…

PyTorch官网demo解读——第一个神经网络(4)

上一篇&#xff1a;PyTorch官网demo解读——第一个神经网络&#xff08;3&#xff09;-CSDN博客 上一篇我们聊了手写数字识别神经网络的损失函数和梯度下降算法&#xff0c;这一篇我们来聊聊激活函数。 大佬说激活函数的作用是让神经网络产生非线性&#xff0c;类似人脑神经元…

十年磨一剑,花为缘享奢app打造行业的又一颠覆性创新

随着国内生活质量的提高&#xff0c;人们对于奢侈品的消费需求也在不断增长。消费者对于高品质、高价值的商品和服务的需求日益增长。2022年我国内地消费者奢侈品市场规模约为4700亿元&#xff0c;预计2023年我国内地消费者奢侈品消费预计将达到5500亿元&#xff0c;呈现出强劲…

旅游平台网页前后端

功能清单 游客功能 用户注册、登录登录权限拦截按名称搜索房间支付流程查看订单信息和状态评论预定过的房间&#xff0c;并自动修改订单状态查看统计剩余房间数量&#xff0c;数量为0时不可预定 管理员功能 房间分类管理 类型的删除、修改、查询&#xff08;准备添加增添功能…

Debezium日常分享系列之:Debezium 通知

Debezium日常分享系列之&#xff1a;Debezium 通知 一、概论二、Debezium通知格式三、Debezium 有关初始快照状态的通知四、Debezium 有关增量快照进度的通知五、启用 Debezium 通知六、访问 Debezium JMX 通知七、自定义通知渠道八、应用案例 一、概论 Debezium 通知提供了一…

Wnmp本地部署结合内网穿透实现任意浏览器远程访问本地服务

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1…

测开基础概念

小王学习录 前言测试1. 什么是测试2. 测试和调试的区别3. 优秀测试人员应该具备的素质 需求1. 需求的定义2. 测试人员眼里的需求 测试用例1. 什么是测试用例(case)2. 什么是Bug 开发测试模型1. 软件的生命周期2. 瀑布模型3. 螺旋模型3. 增量和迭代4. 敏捷开发5. scrum6. 瀑布模…

chromium通信系统-ipcz系统(九)-ipcz系统代码实现-跨Node通信-代理和代理消除

chromium通信系统-ipcz系统(六)-ipcz系统代码实现-跨Node通信-基础通信 一文我们分析了跨Node的基础通信过程。 a进程和b进程通信的过程。 但在程序中a进程将自己打开的一对portal中的一个portal传递给了b进程。由于篇幅问题这个过程我们并没有分析&#xff0c;这篇文章我们就来…

如何使用甘特图进行项目管理?

或许你在工作中或项目启动会议上听说过“甘特图”一词&#xff0c;但对此了解不多。虽然这些图表可能变得相当复杂&#xff0c;但基础知识并不难掌握。通过本文&#xff0c;你将清楚地了解什么是甘特图、何时使用甘特图、创建甘特图的技巧等等。 什么是甘特图&#xff1f; 甘特…

第二十三章 反射(reflection)

一、反射机制&#xff08;重点&#xff09;&#xff08;P711&#xff09; 1. Java Reflection &#xff08;1&#xff09;反射机制允许程序在执行期借助 Reflection API 取得任何类的内部信息&#xff08;比如成员变量、构造器、成员方法等等&#xff09;&#xff0c;并能操作…

虚幻UE 材质-边界混合之PDO像素深度偏移量

2024年的第一天&#xff01;&#xff01;&#xff01;大家新年快乐&#xff01;&#xff01;&#xff01; 可能是长大了才知道 当你过得一般 你的亲朋好友对你真正态度只可能是没有表露出来的冷嘲热讽了 希望大家新的一年平安、幸福、 永远活力满满地追求自己所想做的、爱做的&…

Nginx(十四) 配置文件详解 - 负载均衡(超详细)

1. upstream Syntax: upstream name { ... } Default: — Context: http upstream块定义了一个上游服务器的集群&#xff0c;便于反向代理中的proxy_pass使用。 2. server Syntax: server address [parameters]; Default: — Context: upstream server指定一…

HAL——点灯

学习目标 掌握hal库开发流程掌握STMCubeMX配置过程掌握API查询和使用方式 学习内容 需求 点灯PE3。 开发流程 新建项目芯片配置编写代码测试调试 项目创建 新建项目 选择芯片。输入自己使用的芯片。 选择芯片版本。 芯片配置 功能配置 这里需求是点灯&#xff0c;配置…

构建高效数据流转的 ETL 系统:数据库 + Serverless 函数计算的最佳实践

作者&#xff1a;柳下 概述 随着企业规模和数据量的增长&#xff0c;数据的价值越来越受到重视。数据的变化和更新变得更加频繁和复杂&#xff0c;因此及时捕获和处理这些变化变得至关重要。为了满足这一需求&#xff0c;数据库 CDC&#xff08;Change Data Capture&#xff…

@EnableXXX注解+@Import轻松实现SpringBoot的模块装配

文章目录 前言原生手动装配模块装配概述模块装配的四种方式准备工作声明自定义注解 导入普通类导入配置类导入ImportSelector导入ImportBeanDefinitionRegistrar 总结TODO后续--条件装配 前言 最早我们开始学习或接触过 SSH 或者 SSM 的框架整合&#xff0c;大家应该还记得那些…

Oracle 19C DBA管理常用命令

登入数据库主机&#xff0c;查看 CRS 资源状态&#xff1a; 集群资源启动完毕后&#xff0c;在任意一节点上利用crsctl查看集群状态。 查看&#xff1a;/u01/app/19c/grid/bin/crsctl status res -t 集群资源管理命令&#xff1a; 启动&#xff1a;/u01/app/19c/grid/bin/cr…

Redis 与 Spring: 解决序列化异常的探索之旅

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

kotlin filter 过滤集合(filterIndexed,filterNot,filterIsInstance,filterNotNull)

filter 在kotlin中一个高阶函数属于过滤集合中其中之一 filter作用&#xff1a; 用于根据提供的谓词函数过滤出集合中的元素&#xff0c;注意谓词只能检查元素的值&#xff0c;谓词可以理解为判断条件 举例&#xff1a;检查集合中长度大于3的元素 val numbers listOf(&quo…