八皇后问题
时间:2020-05-23
本文章向大家介绍八皇后问题,主要包括八皇后问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
描述
会下国际象棋的人都知道:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8*8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。对于某个满足要求的八皇后的摆放方法,定义一个与皇后串a与之对应,即a=b1b2···b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道八皇后问题一共有92组解法。给出一个数b,要求输出第b个串。串的比较是这样的:皇后串x置于皇后串y之前,仅当将x视为整数时比y小。
输入:
第1行是测试数据的数组n,后面跟着n行输入。每组测试数据占1行,包括一个正整数b(1<=b<=92)。
输出:
有n行,每行输出对应一个输入。输出应是一个正常数,是对应于b的皇后串。
输入样例1:
2
1
92
输出样例1:
15863724
84136275
代码:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 bool b[100]={0},c[100]={0},d[100]={0}; 5 int a[100],s[93],k=0; 6 int search(int); 7 void print(); 8 using namespace std; 9 int main() 10 { 11 int n,j; 12 cin>>n; 13 search(1); 14 for(int i=1;i<=n;i++) 15 { 16 cin>>j; 17 cout<<s[j]<<endl; 18 } 19 return 0; 20 } 21 int search(int i) 22 { 23 int j; 24 for(int j=1;j<=8;j++) 25 { 26 if((! b[j])&&(! c[i+j])&&(! d[i-j+7])) 27 { 28 a[i]=j; 29 b[j]=1; 30 c[i+j]=1; 31 d[i-j+7]=1; 32 if(i==8) print(); 33 else search(i+1); 34 b[j]=0; 35 c[i+j]=0; 36 d[i-j+7]=0; 37 } 38 } 39 } 40 void print() 41 { 42 int i,p=1; 43 k++; 44 for(i=8;i>=1;i--) 45 { 46 s[k]+=a[i]*p; 47 p*=10; 48 } 49 }
原文地址:https://www.cnblogs.com/cyk20081108/p/12944053.html
- ZeroClipboard实现多个浏览器兼容的复制文本到剪贴板的功能
- Shiro 权限框架使用总结
- Apriori算法介绍(Python实现)
- linux学习第六十二篇:添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
- Entity Framework Core 2.0 入门
- Nodejs开发框架Express3.0开发手记–从零开始
- 使用 nvm 管理不同版本的 node 与 npm
- svg矢量图绘制以及转换为Android可用的VectorDrawable资源
- CListCtrl控件使用方法总结
- JavaScript基础考核真题——你能全做对吗?
- 拉手网面试题,不一样的难度
- Html 5 video/audio 格式转换 ogg
- ASP.NET MVC 开源项目Kigg解读(1)
- 一个setInterval的小问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 增强版本的自开发SAP WebClient UI Repository Information System
- 最大子序列和的问题的解(1)
- 10-STM32+ESP8266+AIR202远程升级方案-功能3-手机APP控制STM32远程更新固件程序,基于ESP8266
- 最大子序列和的接口函数(2)
- 最大子序列和的接口函数(3)
- 【剑指Offer】二叉树的深度
- 运行时间中的对数
- IIC协议
- 通过例子学习编写shell
- 【redis6.0.6】redis源码慢慢学,慢慢看 -- 第三天:MakeFile
- 继续学习Shell脚本(详细)
- 将linux终端的输出信息保存到log中
- UNIX网络编程卷1(第三版)一个简单的时间获取服务器的程序
- Python数据分析实战(3)Python实现数据可视化
- xresloader转表工具链增加了一些新功能(map,oneof支持,输出矩阵,基于模板引擎的加载代码生成等)