八皇后O(1)算法题解
题目描述
在国际象棋棋盘上(8*8)放置八个皇后,使得任意两个皇后之间不能在同一行,同一列,也不能位于同于对角线上。问共有多少种不同的方法,并且按字典序从小到大指出各种不同的放法。
题解
见证奇迹的时刻!!!
#include<cstdio>
int main(){
printf(
"1 5 8 6 3 7 2 4\n"
"1 6 8 3 7 4 2 5\n"
"1 7 4 6 8 2 5 3\n"
"1 7 5 8 2 4 6 3\n"
"2 4 6 8 3 1 7 5\n"
"2 5 7 1 3 8 6 4\n"
"2 5 7 4 1 8 6 3\n"
"2 6 1 7 4 8 3 5\n"
"2 6 8 3 1 4 7 5\n"
"2 7 3 6 8 5 1 4\n"
"2 7 5 8 1 4 6 3\n"
"2 8 6 1 3 5 7 4\n"
"3 1 7 5 8 2 4 6\n"
"3 5 2 8 1 7 4 6\n"
"3 5 2 8 6 4 7 1\n"
"3 5 7 1 4 2 8 6\n"
"3 5 8 4 1 7 2 6\n"
"3 6 2 5 8 1 7 4\n"
"3 6 2 7 1 4 8 5\n"
"3 6 2 7 5 1 8 4\n"
"3 6 4 1 8 5 7 2\n"
"3 6 4 2 8 5 7 1\n"
"3 6 8 1 4 7 5 2\n"
"3 6 8 1 5 7 2 4\n"
"3 6 8 2 4 1 7 5\n"
"3 7 2 8 5 1 4 6\n"
"3 7 2 8 6 4 1 5\n"
"3 8 4 7 1 6 2 5\n"
"4 1 5 8 2 7 3 6\n"
"4 1 5 8 6 3 7 2\n"
"4 2 5 8 6 1 3 7\n"
"4 2 7 3 6 8 1 5\n"
"4 2 7 3 6 8 5 1\n"
"4 2 7 5 1 8 6 3\n"
"4 2 8 5 7 1 3 6\n"
"4 2 8 6 1 3 5 7\n"
"4 6 1 5 2 8 3 7\n"
"4 6 8 2 7 1 3 5\n"
"4 6 8 3 1 7 5 2\n"
"4 7 1 8 5 2 6 3\n"
"4 7 3 8 2 5 1 6\n"
"4 7 5 2 6 1 3 8\n"
"4 7 5 3 1 6 8 2\n"
"4 8 1 3 6 2 7 5\n"
"4 8 1 5 7 2 6 3\n"
"4 8 5 3 1 7 2 6\n"
"5 1 4 6 8 2 7 3\n"
"5 1 8 4 2 7 3 6\n"
"5 1 8 6 3 7 2 4\n"
"5 2 4 6 8 3 1 7\n"
"5 2 4 7 3 8 6 1\n"
"5 2 6 1 7 4 8 3\n"
"5 2 8 1 4 7 3 6\n"
"5 3 1 6 8 2 4 7\n"
"5 3 1 7 2 8 6 4\n"
"5 3 8 4 7 1 6 2\n"
"5 7 1 3 8 6 4 2\n"
"5 7 1 4 2 8 6 3\n"
"5 7 2 4 8 1 3 6\n"
"5 7 2 6 3 1 4 8\n"
"5 7 2 6 3 1 8 4\n"
"5 7 4 1 3 8 6 2\n"
"5 8 4 1 3 6 2 7\n"
"5 8 4 1 7 2 6 3\n"
"6 1 5 2 8 3 7 4\n"
"6 2 7 1 3 5 8 4\n"
"6 2 7 1 4 8 5 3\n"
"6 3 1 7 5 8 2 4\n"
"6 3 1 8 4 2 7 5\n"
"6 3 1 8 5 2 4 7\n"
"6 3 5 7 1 4 2 8\n"
"6 3 5 8 1 4 2 7\n"
"6 3 7 2 4 8 1 5\n"
"6 3 7 2 8 5 1 4\n"
"6 3 7 4 1 8 2 5\n"
"6 4 1 5 8 2 7 3\n"
"6 4 2 8 5 7 1 3\n"
"6 4 7 1 3 5 2 8\n"
"6 4 7 1 8 2 5 3\n"
"6 8 2 4 1 7 5 3\n"
"7 1 3 8 6 4 2 5\n"
"7 2 4 1 8 5 3 6\n"
"7 2 6 3 1 4 8 5\n"
"7 3 1 6 8 5 2 4\n"
"7 3 8 2 5 1 6 4\n"
"7 4 2 5 8 1 3 6\n"
"7 4 2 8 6 1 3 5\n"
"7 5 3 1 6 8 2 4\n"
"8 2 4 1 7 5 3 6\n"
"8 2 5 3 1 7 4 6\n"
"8 3 1 6 2 5 7 4\n"
"8 4 1 3 6 2 7 5\n"
"92");
return 0;
}
八皇后O(1)算法题解的更多相关文章
- 【算法导论】八皇后问题的算法实现(C、MATLAB、Python版)
八皇后问题是一道经典的回溯问题.问题描述如下:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8*8个方格),使它们谁也不能被吃掉? 看到这个问题,最容易想 ...
- 八皇后问题-recall算法
#!/usr/bin/env python3# -*- coding: utf-8 -*-import numbersimport numpyimport math'''八皇后为题:在国际象棋棋盘上摆 ...
- 回溯算法 LEETCODE别人的小结 一八皇后问题
回溯算法实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试中寻找问题的解,当发现已不满足求解条件时,就回溯返回,尝试别的路径. 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目的.但是当探索到某 ...
- 八皇后算法的另一种实现(c#版本)
八皇后: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于 ...
- Python学习二(生成器和八皇后算法)
看书看到迭代器和生成器了,一般的使用是没什么问题的,不过很多时候并不能用的很习惯 书中例举了经典的八皇后问题,作为一个程序员怎么能够放过做题的机会呢,于是乎先自己来一遍,于是有了下面这个ugly的代码 ...
- 回溯算法-C#语言解决八皇后问题的写法与优化
结合问题说方案,首先先说问题: 八皇后问题:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 嗯,这个问题已经被使用各种语言解 ...
- 算法——八皇后问题(eight queen puzzle)之回溯法求解
八皇后谜题是经典的一个问题,其解法一共有种! 其定义: 首先定义一个8*8的棋盘 我们有八个皇后在手里,目的是把八个都放在棋盘中 位于皇后的水平和垂直方向的棋格不能有其他皇后 位于皇后的斜对角线上的棋 ...
- 【算法】八皇后问题 Python实现
[八皇后问题] 问题: 国际象棋棋盘是8 * 8的方格,每个方格里放一个棋子.皇后这种棋子可以攻击同一行或者同一列或者斜线(左上左下右上右下四个方向)上的棋子.在一个棋盘上如果要放八个皇后,使得她们互 ...
- 『嗨威说』算法设计与分析 - 回溯法思想小结(USACO-cha1-sec1.5 Checker Challenge 八皇后升级版)
本文索引目录: 一.回溯算法的基本思想以及个人理解 二.“子集和”问题的解空间结构和约束函数 三.一道经典回溯法题点拨升华回溯法思想 四.结对编程情况 一.回溯算法的基本思想以及个人理解: 1.1 基 ...
- 八皇后问题求解java(回溯算法)
八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处 ...
随机推荐
- PHP使用mail函数发送邮件
yum install sendmail #需要使用到sendmail hostname jb51.net #建议修改主机名为域名格式,否则启动sendmail会很慢 systemctl start ...
- Linux_配置匿名访问FTP服务
[RHEL8]-FTPserver:[Centos7]-FTPclient !!!测试环境我们首关闭防火墙和selinux(FTPserver和FTPclient都需要) [root@localhos ...
- 11.20 yum:自动化RPM包管理工具
yum(Yellow dog Updater Modified)是多个Linux发行版的软件包管理器,例如Redhat RHEL.CentOS和Fedora.yum主要用于自动安装.升级rpm软件包, ...
- 7.7-9 chage、chpasswd、su
7.7 chage:修改用户密码有效期 chage命令用于查看或修改用户密码的有效期,有些参数和passwd的功能相同. -d 设置上一次密码更改的日期 -E 账号过期的日期.日期格式 ...
- 删除win10系统下文件默认打开方式的关联-win10配置
现象 文件默认打开方式错误 链接到老的打开软件 无法图形化重定义关联软件 文件图标关联异常 1. 打开注册表编辑器 win + R regedit 2. 修改注册表 找到以下注册表路径,找到指定的文件 ...
- Day029 JDK8中新日期和时间API (四)
JDK8中新日期和时间API 其他的一些API ZoneId:该类中包含了所有的时区信息,一个时区的ID,如 Europe/Paris ZonedDateTime:一个在ISO-8601日历系统时区的 ...
- Python-Redis-常用操作&管道
常用操作 1.1 delete(*names) ? 1 2 3 4 5 6 7 8 9 # 根据删除redis中的任意数据类型 print(r.get('name')) r.delete('nam ...
- Python+Selenium学习笔记18 - 不开启浏览器测试
运行脚本时间比较长时可以不打开浏览器测试,这样在测试运行时,电脑还是可以用作其他操作的. 只需要在运行脚本上加上下面代码的678行即可 1 # coding = utf-8 2 3 from sele ...
- 用TVM在硬件平台上部署深度学习工作负载的端到端 IR 堆栈
用TVM在硬件平台上部署深度学习工作负载的端到端 IR 堆栈 深度学习已变得无处不在,不可或缺.这场革命的一部分是由可扩展的深度学习系统推动的,如滕索弗洛.MXNet.咖啡和皮托奇.大多数现有系统针对 ...
- 关于Numba的线程实现的说明
关于Numba的线程实现的说明 由Numbaparallel目标执行的工作由Numba线程层执行.实际上,"线程层"是Numba内置库,可以执行所需的并发执行.在撰写本文时,有三个 ...