问题 D: 2046八皇后

题目描述

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

样例输入

3
6
4
25

样例输出

25713864
17582463
36824175

思路:很普通的方法;
递归生成所有合法的排列,排列转换为整数,排序

#include <iostream>
#include <algorithm>
using namespace std;int P[9], hashTable[9] = {0};
int i = 0;
int res[92] = {0};void generateP(int index) {if (index == 9) {i++;int num = 0;for (int j = 1; j < 9; j++){num += P[j]*pow(10.0, (float)(8 - j));}res[i] = num;}for (int x = 1; x <= 8; x++) {if (hashTable[x] == 0) {int flag = 1;//判断该排列是否有两个皇后在同一对角线for (int per = 1; per < index; per++) {if (abs(per - index) == abs(P[per] - x)) {flag = 0;break;}}if (flag) {P[index] = x;hashTable[x] = 1;generateP(index + 1);hashTable[x] = 0;}}}
}int main() {generateP(1);sort(res+1, res+9);int n, i;cin>>n;while(n--) {cin>>i;cout<<res[i]<<endl;}return 0;
}

C/C++[codeup 2046]8皇后相关推荐

  1. Codeup墓地 Contest100000583 问题 D:八皇后

    题目描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某个满足要求的8 ...

  2. codeup墓地目录(算法笔记习题刷题笔记)

    在线codeup contest 地址:http://codeup.cn/contest.php Contest100000575 - <算法笔记>3.1小节--入门模拟->简单模拟 ...

  3. codeup墓地目录

    代码内容为原创C++ 在线codeup contest 地址:http://codeup.cn/contest.php Contest100000575 - <算法笔记>3.1小节--入门 ...

  4. 算法笔记CodeUp第一至第六章刷题记录

    文章目录 <算法笔记>2.2小节--C/C++快速入门->顺序结构 1.例题1-1-1 按要求输出信息(1) 2.例题1-1-2 按要求输出信息(2) 3.例题1-2-1 求两个整数 ...

  5. n皇后问题JS实现(N-Queens)

    n皇后问题作为经典的面试题,今天在LeetCode刷到,解法比较直接,回溯递归.其他解法咱也不会.... Leetcode地址:https://leetcode.com/problems/n-quee ...

  6. 回溯 皇后 算法笔记_算法笔记_04_回溯

    设计思想: (1)适用:求解搜索问题和优化问题. (2)搜索空间:数,节点对应部分解向量,可行解在树叶上. (3)搜索过程:采用系统的方法隐含遍历搜索树. (4)搜索策略:深度优先,宽度优先,函数优先 ...

  7. C语言局部搜索算法(爬山法,模拟退火法,遗传算法)求解八皇后问题

    C语言局部算法求解八皇后问题 写在前面 八皇后问题及局部搜索算法 爬山法(hill-climbing searching) 算法介绍 代码实现 退火法(simulated annealing) 算法介 ...

  8. 递归/回溯:八皇后问题N-Queens

    N皇后问题是计算机科学中最为经典的问题之一,该问题可追溯到1848年,由国 际西洋棋棋手马克斯·贝瑟尔于提出了8皇后问题. 将N个皇后放摆放在N*N的棋盘中,互相不可攻击,有多少种摆放方式,每种摆 放 ...

  9. 八皇后的一个回溯递归解法

    解法来自严蔚敏的数据结构与算法. 代码如下: #include <iostream> using namespace std; const int N = 8;//皇后数 int coun ...

  10. Prolog学习:数独和八皇后问题

    上一篇简单介绍了下Prolog的一些基本概念,今天我们来利用这些基本概念解决两个问题:数独和八皇后问题. 数独 数独是一个很经典的游戏: 玩家需要根据n×n盘面上的已知数字,推理出所有剩余空格的数字, ...

最新文章

  1. java中class对象的理解 讲得相当不错 很接地气 引用下
  2. 前列腺癌检测 AI 算法登上《柳叶刀》:分类性能超过人类专家,还能完成其他临床任务...
  3. HDU 1253 胜利大逃亡
  4. Kali Linux 64位架构安装Veil-Evasion
  5. Kali Linux 2020.1修改系统语言
  6. html5实现ios长按图标后进入图标排序及删除功能的效果
  7. 【项目实战课】基于Pytorch的Pix2Pix黑白图片上色实战
  8. 计算机应用基础0006 19秋在线作业2,川大《计算机应用基础0006》13春在线作业2
  9. 【BZOJ - 3224】普通平衡树(Splay模板题)
  10. 带有哨兵的双向循环链表
  11. ScrollView嵌套StackView提示需要宽度和高度限制
  12. MySQL高级-触发器
  13. SAP License:备选统驭科目问题
  14. Microsoft visio 2013 professional破解软件
  15. 最新Centos7.6 部署ELK日志分析系统
  16. css 文字发光效果
  17. 简述在android中如何发送广播消息,Android Intent发送广播消息实例详解
  18. 芯片优缺点_“碳基芯片”的材料,将采用碳纳米管制成,或比传统芯片提升10倍...
  19. 求绝对值最大值 -java求绝对值
  20. NumPy科学计算库-学习笔记

热门文章

  1. cnn输入层_基于 CNN 的文本分类算法
  2. 实验一matlab编程基础,实验一、MATLAB编程基础及典型实例.doc
  3. WPF 邮箱输入框提示 和 手机号码验证 .
  4. 如何使用华为官方模拟器eNSP的12800为后续SDN实验做好准备
  5. 二叉搜索树的根插入、选择、删除、合并、排序等操作的实现
  6. 转: Eclipse自动提示功能
  7. 利用AsyncHttpClient实现图片的上传与下载
  8. 安装ssd后不识别网卡_群晖E10M20-T1:你以为它是张网卡,其实它还带俩SSD
  9. 算法学习:最小生成树
  10. http报文格式_(一)深入浅出TCPIP之理解TCP报文格式和交互流程