博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搜索6--noi1700:八皇后问题
阅读量:4624 次
发布时间:2019-06-09

本文共 1922 字,大约阅读时间需要 6 分钟。

搜索6--noi1700:八皇后问题

一、心得

 

二、题目

1756:八皇后

总时间限制: 
1000ms
内存限制: 
65536kB
描述
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 
对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b
1b
2...b
8,其中b
i为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。
给出一个数b,要求输出第b个串。串的比较是这样的:皇后串x置于皇后串y之前,当且仅当将x视为整数时比y小。
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数b(1 <= b <= 92)
输出
输出有n行,每行输出对应一个输入。输出应是一个正整数,是对应于b的皇后串。
样例输入
2192
样例输出
1586372484136275

 

三、分析

DFS

 

四、AC代码

1 //1700:八皇后问题 2 /* 3  4 */  5 #include 
6 using namespace std; 7 //用来存储方案 ,下标都是从1开始 8 int a[93][9]; 9 int visRow[9]; //行10 int visLeftIncline[17];//左斜线 使用的时候 row+column 11 int visRightIncline[16]; //右斜线,使用的时候row-column+8 12 int ansCount=1;13 14 void init(){15 16 }17 18 void print(){19 int case1;20 cin>>case1;21 int detailCase;22 while(case1--){23 cin>>detailCase;24 for(int i=1;i<=8;i++){25 cout<
8){34 ++ansCount; 35 //因为是树形结构,所以下面的解要用到前面的解36 //因为是直接从中间开始,所以前面的值直接用 ansCount-1填37 38 for(int i=1;i<=8;i++){39 a[ansCount][i]=a[ansCount-1][i];40 }41 }42 else{43 for(int row=1;row<=8;row++){44 if(!visRow[row]&&!visLeftIncline[row+column]&&!visRightIncline[row-column+8]){45 visRow[row]=1;46 visLeftIncline[row+column]=1;47 visRightIncline[row-column+8]=1;48 a[ansCount][column]=row;49 search(column+1);//找下一列50 //回溯 51 visRow[row]=0;52 visLeftIncline[row+column]=0;53 visRightIncline[row-column+8]=0;54 }55 }56 }57 }58 59 int main(){60 init(); 61 search(1);62 print();63 return 0;64 }

 

 

五、注意点

1、标红位置的代码看一下

因为是树形结构,所以下面的解要用到前面的解因为是直接从中间开始,所以前面的值直接用 ansCount-1填

转载于:https://www.cnblogs.com/Renyi-Fan/p/7348084.html

你可能感兴趣的文章
linux下core文件调试方法
查看>>
20个创意404错误页面设计的启示
查看>>
基础训练 芯片测试
查看>>
如何用命令将本地项目上传到git
查看>>
JavaScript 实现鼠标拖动元素
查看>>
js 模糊查询 (360接口)
查看>>
python+rabbitMQ实现生产者和消费者模式
查看>>
“模态”对话框和“后退”按钮
查看>>
关于javascript实现的网站页面侧边悬浮框"抖动"问题
查看>>
linux_命令格式和命令提示符
查看>>
Cocos2d-X-3.0之后的版本的环境搭建
查看>>
when case group by 的用法集合
查看>>
洛谷P1908 逆序对
查看>>
转义符
查看>>
poj 1019
查看>>
asp.net mvc上传文件
查看>>
bitmq集群高可用测试
查看>>
主成分分析(PCA)原理详解
查看>>
短信验证接口网址
查看>>
Geohash距离估算
查看>>