(回溯2)8皇后

题目
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将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

//错误代码,按题目要求a=b1b2...b8,其中bi为相应摆法中第i行皇后所处的列数。
#include <iostream>
using namespace std;
//用来存储方案 ,下标都是从1开始 
int a[9][9]; 
int visRow[9]; //行
int visLeftIncline[17];//左斜线 使用的时候 row+column 
int visRightIncline[16]; //右斜线,使用的时候row-column+8 
int ansCount=0;
int b[93][10];void print(){++ansCount;for(int i=1;i<=8;i++){for(int j=1;j<=8;j++){if(a[i][j]==1){b[ansCount][i]=j;break; } }}} void search(int column){if(column>8){//if(ansCount>=5) return;print();//cout<< ansCount<<endl;}else{for(int row=1;row<=8;row++){if(!visRow[row]&&!visLeftIncline[row+column]&&!visRightIncline[row-column+8]){visRow[row]=1;visLeftIncline[row+column]=1;visRightIncline[row-column+8]=1;a[row][column]=1;search(column+1);//找下一列//回溯 visRow[row]=0;visLeftIncline[row+column]=0;visRightIncline[row-column+8]=0;a[row][column]=0; }}}
}int main(){search(1);int n,aww;cin>>n;for(int i=0;i<n;++i){cin>>aww;for(int j=1;j<=8;++j){cout<<b[aww][j];}cout<<endl;} return 0;
}
//ac代码:
//明明是从第一列到第八列的行数的组合,题目绝对有问题
#include <iostream>
using namespace std;
//用来存储方案 ,下标都是从1开始 
int a[93][9]; 
int visRow[9]; //行
int visLeftIncline[17];//左斜线 使用的时候 row+column 
int visRightIncline[16]; //右斜线,使用的时候row-column+8 
int ansCount=1;void init(){}void print(){int case1;cin>>case1;int detailCase;while(case1--){cin>>detailCase;for(int i=1;i<=8;i++){cout<<a[detailCase][i];}cout<<endl;}} void search(int column){if(column>8){++ansCount; //因为是树形结构,所以下面的解要用到前面的解//因为是直接从中间开始,所以前面的值直接用 ansCount-1填//for(int i=1;i<=8;i++){a[ansCount][i]=a[ansCount-1][i];}}else{for(int row=1;row<=8;row++){if(!visRow[row]&&!visLeftIncline[row+column]&&!visRightIncline[row-column+8]){visRow[row]=1;visLeftIncline[row+column]=1;visRightIncline[row-column+8]=1;a[ansCount][column]=row;//记录这一列是在第几行search(column+1);//找下一列//回溯 visRow[row]=0;visLeftIncline[row+column]=0;visRightIncline[row-column+8]=0;}}}
}int main(){init(); search(1);print();return 0;
}

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

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

相关文章

武汉理工大学计算机学院2018复试,武汉理工大学2018年自主招生复试揭秘

原标题&#xff1a;武汉理工大学2018年自主招生复试揭秘2018年武汉理工大学考试方式学马教育徐老师介绍&#xff0c;考核以笔试和学科专项测试或特殊专长考评的方式进行&#xff0c;具体要求如下&#xff1a;笔试科目为能力测试(满分300分&#xff0c;内容为数学与逻辑、中文阅…

python3的输出函数_教女朋友学Python3(二)简单的输入输出及内置函数查看 原创...

这是第二天了&#xff0c;工作之余和女朋友一起学Python3&#xff0c;代码都是她敲的&#xff0c;有点辣眼睛&#xff0c;仅做参考。1.题目&#xff1a;输入“姓名”&#xff0c;输出“你好&#xff0c;姓名”步骤&#xff1a;file>new file 输入下面代码Python3代码&#x…

(回溯1)八皇后

描述 在国际象棋棋盘上放置八个皇后&#xff0c;要求每两个皇后之间不能直接吃掉对方。即任意两个皇后都不能处于同一行、同一列或同一斜线上 输入 无输入。 输出 按给定顺序和格式输出所有八皇后问题的解&#xff08;见Sample Output&#xff09;。 样例输入 样例输出 …

nokia 计算机手机,NOKIA手机与电脑的数据线连接

将手机用数据线与电脑连接。系统显示找到新的硬件.下面是学习啦小编收集整理的NOKIA手机与电脑的数据线连接&#xff0c;希望对大家有帮助~~NOKIA手机与电脑的数据线连接方法/步骤将手机用数据线与电脑连接。系统显示找到新的硬件。安装相应的驱动程序。选择“从列表或指定位置…

php网站建设实训引言_网站建设实训报告

实训要求5个人一组&#xff0c;每个组员分工合作完成一个公司的网站&#xff0c;例如组员1负责&#xff1a;网站总设计&#xff0c;公共文件&#xff0c;设计公司LOGO,图片组员2负责&#xff1a;用户浏览模块组员3负责&#xff1a;系统管理模块组员4负责&#xff1a;数据库设计…

(递推1)兔子繁殖问题

有一对小兔子&#xff0c;小兔子过Z个月长大&#xff0c;一对大兔子X个月生Y对小兔子&#xff0c;求n个月后的兔子总对数。 当xyz都是1的时候&#xff0c;f(n)f(n-1)f(n-2) 问题一&#xff1a; 有一对小兔子&#xff0c;小兔子过5个月长大&#xff0c;一对大兔子3个月生4对小兔…

七年级计算机教学质量分析,七年级数学期末教学质量分析报告

七年级数学期末教学质量分析报告提高教育教学质量是学校工作的重中之重,扎实进行课堂教学改革是提高质量的有力保证,是前提条件。下面是小编为大家整理的七年级数学期末教学质量分析报告&#xff0c;欢迎阅读。七年级数学期末教学质量分析报告一一、试卷的主要特点该试卷既注重…

上下位机串口通信 python_怎么将图片通过串口发送给下位机?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼是这样的&#xff0c;本人小白一枚&#xff0c;最近有一个想法&#xff0c;想用python做上位机 C51做下位机做一台激光打印机&#xff0c;两个我都刚学不久&#xff0c;所以都不太了解&#xff0c;图像处理我用了抖动算法&#xff…

(数论1)质因数

质因数&#xff08;素因数或质因子&#xff09;在数论里是指能整除给定正整数的质数 质数定义为在大于1的自然数中&#xff0c;除了1和它本身以外不再有其他因数。 正整数的因数分解可将正整数表示为一连串的质因子相乘&#xff0c;质因子如重复可以用指数表示 除了1以外&am…

做计算机工作的要专用手机吗,怎么在手机上完成工作?原来没有电脑手机还可以这样用...

用手机工作&#xff0c;放在功能机时代或者早期的智能手机时代&#xff0c;这个可能性很小。但是放在这个智能手机黑科技一年比一年厉害的时代来说&#xff0c;用手机来工作完全可能&#xff0c;至少一些简单的工作是可以在手机上实现的。因为手机可以借助一些自身的设计或者配…

(递归1)爬楼梯

题目描述 树老师爬楼梯&#xff0c;他可以每次走1级或者2级&#xff0c;输入楼梯的级数&#xff0c;求不同的走法数 例如&#xff1a;楼梯一共有3级&#xff0c;他可以每次都走一级&#xff0c;或者第一次走一级&#xff0c;第二次走两级 也可以第一次走两级&#xff0c;第二…

ajax success返回 .net,asp.net-mvc-返回JsonResult的ASP.Net MVC Ajax调用

我开始学习ASP.Net MVC(候选发行版),但遇到了一些麻烦.我可能只是很挑剔,但我想问一下.我想使用内置的(扩展的)ASP.Net Ajax方法来调用我的控制器,该方法称为“ GetNames”,它返回一个JsonResult对象.我已经看到了使用$.getJSON()jQuery方法的示例,但我宁愿执行如下操作&#x…

参考文献标号字体_论文格式要求及字体大小

论文格式要求及字体大小论文既是探讨问题进行学术研究的一种手段&#xff0c;又是描述学术研究成果进行学术交流的一种工具。下面小编为大家整理了论文格式要求及字体大小&#xff0c;欢迎阅读&#xff01;一、封面题目&#xff1a;小二号黑体加粗居中。各项内容&#xff1a;四…

(递归2)汉诺塔

题目描述 约19世纪末&#xff0c;在欧州的商店中出售一种智力玩具&#xff0c;在一块铜板上有三根杆&#xff0c;最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到中间的杆上&#xff0c;条件是一次只能移动一个盘&#xff0c;且不…

与服务器传文件格式,客户端如何向服务器传文件格式

客户端如何向服务器传文件格式 内容精选换一换已获取该弹性云服务器的密钥文件&#xff0c;如未获取&#xff0c;请参见获取弹性云服务器的密钥文件。弹性云服务器已经绑定弹性IP地址。已配置安全组入方向的访问规则。如果您是在Windows操作系统上登录Linux&#xff0c;可以按照…

docker linux 快速开窗口_技术|如何使用 Docker 快速配置数据科学开发环境?

数据科学开发环境配置起来让人头疼&#xff0c;会碰到包版本不一致、错误信息不熟悉和编译时间漫长等问题。这很容易让人垂头丧气&#xff0c;也使得迈入数据科学的这第一步十分艰难。而且这也是一个完全不常见的准入门槛。还好&#xff0c;过去几年中出现了能够通过搭建孤立的…

(递归3)最大公约数

题目给定两个正整数&#xff0c;求它们的最大公约数。 输入 输入一行&#xff0c;包含两个正整数(<1,000,000,000)。 输出 输出一个正整数&#xff0c;即这两个正整数的最大公约数。 样例输入 6 9 样例输出 3 提示 求最大公约数可以使用辗转相除法&#xff1a; 假…

服务器搭建维护,服务器搭建维护方法

服务器搭建维护方法 内容精选换一换登录Windows操作系统的弹性云服务器时&#xff0c;需使用密码方式登录。因此&#xff0c;用户需先根据创建弹性云服务器时使用的密钥文件&#xff0c;获取该弹性云服务器初始安装时系统生成的管理员密码(Administrator帐户或Cloudbase-init设…

(递归4)放苹果

描述 把M个同样的苹果放在N个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f;&#xff08;用K表示&#xff09;5&#xff0c;1&#xff0c;1和1&#xff0c;5&#xff0c;1 是同一种分法。 输入 第一行是测试数据的数目t&…

魔兽怀旧服服务器怎么修改,《魔兽世界怀旧服》转服功能怎么用 转服功能使用方法教程...

导读魔兽世界怀旧服不少玩家都处在高负载服务器中&#xff0c;这不仅对于服务器压力太大&#xff0c;而且对于玩家的游戏体验也不好&#xff0c;近期魔兽世界怀旧服免费角色转移功能开放&#xff0c;缓解玩家的压力和带来更好的游戏体验&#xff0c;下面小编就给大家带来魔兽..…