openjudge_2.5基本算法之搜索_1756:八皇后

题目

1756:八皇后
查看提交统计提问
总时间限制: 1000ms 内存限制: 65536kB
描述
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将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

理解

1.从第一列开始f(1),每列从第一行还是找皇后位置。
2for(int i=1;i<=8;i++)
3.找没用过的行、唯一斜行(行+列=?)、唯一反斜行(8+行-列=?)。
4.找到了,该位置就是该行皇后位置。h[i]=1,xk[x+i]=1,fx[8+x-i]=1。并存到字符串的该列位置
5.递归下一列f(l+1),继续2-4
6.直到8行都有皇后了,就算一个结果序列。
7.回溯,撤销4行的设置,改尝试2循环的下一行。

代码

#include <bits/stdc++.h>
using namespace std;
bool k[9][9],//哪个坐标有皇后
h[18],//哪行已经有皇后了
xk[18],//哪个斜列有皇后了
fx[18];//哪个反斜列已经有皇后了
int n,//几组
b,//哪一组
m=1;//第几组方案
string s[100];
void view(int x){
cout<<“No: “<<x<<endl;
for(int i=1;i<=8;i++){
for(int j=1;j<=8;j++)cout<<k[i][j]<<” “;cout<<endl;
}
}
void go(int l){//递归,每行寻找一个可以放皇后得位置,能放到第8列就可以,否则回溯,尝试下一行
if(l==9){
//view(m);
//cout<<m<<”\t”<<s[m]<<endl;
s[m+1]=s[m]; //拷贝上次序列,往下再修改
m++;
return;//该方案就结束
}//没有结束就继续找下一列
for(int i=1;i<=8;i++){//寻找该列可以放皇后的行
if(!h[i]&&!xk[l+i]&&!fx[8+i-l]){//如果该行该斜列该反斜列没有皇后
k[l][i]=1,h[i]=1,xk[l+i]=1,fx[8+i-l]=1;//确认该位置放值皇后
s[m][l-1]=char(i+‘0’);//该列位置是哪一行
go(l+1);//该列放置后,继续下一列
k[l][i]=0,h[i]=0,xk[l+i]=0,fx[8+i-l]=0;//撤销该位置皇后放置,回溯,尝试下一行
}
}
}
int main(){
//freopen(“data.cpp”,“r”,stdin);
s[1]=" ";//字符串有8个位置
cin>>n;
go(1);//从第一列开始
while(n–){
cin>>b;cout<<s[b]<<endl;
}
return 0;
}

小结

广搜,用队列,无差别寻找
深搜,递归,回溯,有差别寻找
我认为都是事关图的概念。

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

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

相关文章

java求三个整数x,y,z中的最大值

求三个整数x,y,z中的最大值&#xff08;使用三元运算符&#xff09; 定义三个int类型变量,x,y,z&#xff0c;随意赋值整数值 定义一个int类型变量max&#xff0c;先存储x与y中的最大值&#xff08;使用三元运算符&#xff09; 再次对max赋值&#xff0c;让它等于上面max与z中…

一些知识点小细节

当遇到的问题有关逆序输出&#xff0c;可以转换一下思想&#xff0c;就是使用for循环的时候&#xff0c;i的初始化是从数组或者是字符串的最后一个&#xff0c;然后注意设置循环结束的条件&#xff0c;最重要的是不要忘记i--;而不是I&#xff1b; 注意&#xff1a;当要逆序输出…

OpenHarmony实例:【资源管理器】

介绍 本工程使用[ohos.app.ability.common] 接口中的AbilityContext类&#xff0c;获取资源管理器resourceManager&#xff0c;使用[ohos.resourceManager.d.ts]中的接口&#xff0c;展示了格式化字符串查询、基于指定屏幕分辨率查询媒体资源、获取系统资源管理对象等基础功能…

Trinamic步进电机控制模块助力抗击疟疾

疟疾是世界上最致命的传染病之一。这种疾病在亚洲、非洲和南美洲的热带地区十分常见&#xff0c;越早诊断&#xff0c;越能有效治疗。标准疟疾检测需要由训练有素的技术人员在显微镜下检测血液样本&#xff0c;以确认是否存在疟原虫&#xff0c;以及疟原虫的数量和类型。仅在印…

弱口令入侵FE企业管理平台【附口令】

漏洞描述 飞企互联-FE企业运营管理平台 druid路径弱口令&#xff0c;攻击者可能通过尝试弱口令&#xff0c;非法进入系统&#xff0c;恶意操作或者收集信息进一步攻击利用。 漏洞复现 1、Fofa app"飞企互联-FE企业运营管理平台"2、零零信安 (html_banner360浏览…

前端使用minio传输文件

minio官方文档 minio-js可以支持ts。 安装完可能会出现 Can‘t import the named export ‘xxx‘ from non EcmaScript module (only default export is available)可以尝试降低minio的版本 npm install minio7.0.18 --save代码&#xff1a; 初始化 const Minio require(…

Java 10 新特性

Java 10 新特性 Java10它号称有109项新特性&#xff0c;包含12个JEP。 需要注意的是&#xff0c;本次Java10并不是Oracle的官方LTS版本&#xff0c;所以咱们可以先了解新特性。然后坐等java11的发布再考虑在生产中使用吧。 特性列表 局部变量的类型推断 var关键字 GC改进和…

【python】基于pyttsx3库的字符串转音频文件

一、源码 import pyttsx3 engine pyttsx3.init() engine.setProperty(volume, 0.8) engine.setProperty(rate, 150) engine.save_to_file("Hello, World!", "output.mp3") engine.runAndWait()二、介绍 使用pyttsx3库&#xff0c;设置声音与速率&#x…

聊一聊一些关于npm、pnpm、yarn的事

前言 整理了最近的闲聊&#xff0c;话题是前端各个包管理器&#xff0c;如果分享的不对或者有异议的地方&#xff0c;麻烦请及时告诉我~ 耐心看完&#xff0c;也许你会有所收获~ 概述 本文阅读时间&#xff1a;10-15分钟左右&#xff1b; 难度&#xff1a;初级&#xff0c…

【回溯】Leetcode 51. N 皇后【困难】

N 皇后 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。…

C# Web应用调用EXE文件的一些实践

目录 需求 范例运行环境 可执行文件的设计 调用可执行文件方法 RunExecuteFile RunShellExecuteFile 方法的区别 WEB调用举例 小结 需求 最近同事使用Python开发了一款智能文字转语音的程序&#xff0c;经讨论部署在WINDOWS环境服务器下&#xff0c;因此需要生成目标…

Pytest实践:Python测试技术基础知识!

一、简介 在软件开发领域&#xff0c;确保代码的正确性和稳健性至关重要。这就是软件测试发挥作用的地方。Python 是一种通用且广泛使用的编程语言&#xff0c;提供了大量的工具和库来帮助测试过程。 其中&#xff0c;Pytest就是一个很好用的测试框架&#xff0c;可以在 Pyth…

transformer上手(3) —— 开箱即用的 pipelines

1 开箱即用的 pipelines Transformers 库将目前的 NLP 任务归纳为几下几类&#xff1a; 文本分类&#xff1a;例如情感分析、句子对关系判断等&#xff1b;对文本中的词语进行分类&#xff1a;例如词性标注 (POS)、命名实体识别 (NER) 等&#xff1b;文本生成&#xff1a;例如…

2024年MathorCup数学建模A题移动通信网络中PCI规划问题解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 A题 移动通信网络中PCI规划问题 原题再现&#xff1a; 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖小区编号进行合理配置&#xff0c;以避免 PCI 冲突、PCI 混淆以及 PCI 模3 千扰等现象。PCI 规划…

milvus各组件的结构体分析

milvus各组件的结构体分析 各组件启动&#xff0c;需要构建各组件的结构体&#xff0c;一共8个。 runComponent(ctx, localMsg, wg, components.NewRootCoord, metrics.RegisterRootCoord) runComponent(ctx, localMsg, wg, components.NewProxy, metrics.RegisterProxy) run…

lv_micropython for ESP32-C3

一、开发平台说明 硬件&#xff1a;立创实战派ESP32-C3开发板。处理器ESP32-C3&#xff08;内置400KB SRAM&#xff09;&#xff0c;无内置FLASH&#xff0c;2.0寸液晶&#xff08;液晶驱动IC:ST7789&#xff0c;触屏驱动IC:FT6336&#xff09;&#xff0c;下载口UART0。 ESP…

计算机网络的起源与发展历程

文章目录 前言时代背景ARPANET 的诞生TCP/IP 协议簇与 Internet 的诞生HTTP 协议与 Web 世界结语 前言 在当今数字化时代&#xff0c;计算机网络已经成为我们生活中不可或缺的一部分。无论是在家庭、学校、还是工作场所&#xff0c;我们都能感受到网络的巨大影响。随着互联网的…

c++ 中文转拼音的封装, char 类型 不支持 中文 已解决

在日常业务中&#xff0c;需要进行中文转拼音的检索。已便实现对应的 模糊搜索。 使用方法 std::string res "我是中国人";char* result new char[res.length() 1];for (int i 0; i < res.length(); i){result[i] res[i];}result[res.length()] \0;std::str…

【C++第三阶段】vector容器

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 构造函数赋值操作容量和大小插入和删除数据存取互换容器预留空间 构造函数 vector函数是常用数据结构&#xff0c;见于刷题网站。 它是单端数组&#xff0c;与普通数组区别在于可以…

【Linux】基础IO----理解缓冲区

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;理解缓冲区 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a;Linux初阶 > 望…