题目描述

在国际象棋棋盘上(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)算法题解的更多相关文章

  1. 【算法导论】八皇后问题的算法实现(C、MATLAB、Python版)

    八皇后问题是一道经典的回溯问题.问题描述如下:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8*8个方格),使它们谁也不能被吃掉?         看到这个问题,最容易想 ...

  2. 八皇后问题-recall算法

    #!/usr/bin/env python3# -*- coding: utf-8 -*-import numbersimport numpyimport math'''八皇后为题:在国际象棋棋盘上摆 ...

  3. 回溯算法 LEETCODE别人的小结 一八皇后问题

    回溯算法实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试中寻找问题的解,当发现已不满足求解条件时,就回溯返回,尝试别的路径. 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目的.但是当探索到某 ...

  4. 八皇后算法的另一种实现(c#版本)

    八皇后: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于 ...

  5. Python学习二(生成器和八皇后算法)

    看书看到迭代器和生成器了,一般的使用是没什么问题的,不过很多时候并不能用的很习惯 书中例举了经典的八皇后问题,作为一个程序员怎么能够放过做题的机会呢,于是乎先自己来一遍,于是有了下面这个ugly的代码 ...

  6. 回溯算法-C#语言解决八皇后问题的写法与优化

    结合问题说方案,首先先说问题: 八皇后问题:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 嗯,这个问题已经被使用各种语言解 ...

  7. 算法——八皇后问题(eight queen puzzle)之回溯法求解

    八皇后谜题是经典的一个问题,其解法一共有种! 其定义: 首先定义一个8*8的棋盘 我们有八个皇后在手里,目的是把八个都放在棋盘中 位于皇后的水平和垂直方向的棋格不能有其他皇后 位于皇后的斜对角线上的棋 ...

  8. 【算法】八皇后问题 Python实现

    [八皇后问题] 问题: 国际象棋棋盘是8 * 8的方格,每个方格里放一个棋子.皇后这种棋子可以攻击同一行或者同一列或者斜线(左上左下右上右下四个方向)上的棋子.在一个棋盘上如果要放八个皇后,使得她们互 ...

  9. 『嗨威说』算法设计与分析 - 回溯法思想小结(USACO-cha1-sec1.5 Checker Challenge 八皇后升级版)

    本文索引目录: 一.回溯算法的基本思想以及个人理解 二.“子集和”问题的解空间结构和约束函数 三.一道经典回溯法题点拨升华回溯法思想 四.结对编程情况 一.回溯算法的基本思想以及个人理解: 1.1 基 ...

  10. 八皇后问题求解java(回溯算法)

    八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处 ...

随机推荐

  1. wps中新罗马字体如何设置Times New Roman

    word wps中新罗马字体如何设置Times New Roman  ###   WPS字体自带 Times New Roman  ###

  2. zabbix官方源替换为阿里云的zabbix源,一键脚本。(安装zabbix报错curl#18 - "transfer closed with 2988713 bytes remaining to read":15 ETA Trying other mirro)

    最近突然安装zabbix总是报错,比如 (24/27): t1lib-5.1.2-14.el7.x86_64.rpm | 166 kB 00:00:00 zabbix-web-4.4.6-1.el7. ...

  3. 一看就懂的 安装完ubuntu 18.04后要做的事情和使用教程

    一看就懂的 安装完ubuntu 18.04后要做的事情和使用教程原创CrownP 最后发布于2019-02-05 00:48:30 阅读数 2982 收藏展开1.更改为阿里云的源点击软件和更新 点击其 ...

  4. Java 运行 Jar 包中java -cp 与 java jar 的区别

    java -cp java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符:window上分号"; ...

  5. Python数模笔记-PuLP库(1)线性规划入门

    1.什么是线性规划 线性规划(Linear programming),在线性等式或不等式约束条件下求解线性目标函数的极值问题,常用于解决资源分配.生产调度和混合问题.例如: max fx = 2*x1 ...

  6. SqlServer事务详解(事务隔离性和隔离级别详解)

    概述 不少人对于事务的使用局限于begin transaction:开始事务.commit transaction:提交事务.rollback transaction:回滚事务的初步运用. 并且知道使 ...

  7. Elasticsearch快速入门和环境搭建

    内容概述 什么是Elasticsearch,为什么要使用它? 基础概念简介 节点(node) 索引(index) 类型映射(mapping) 文档(doc) 本地环境搭建,创建第一个index 常用R ...

  8. 八、.net core(.NET 6)配置读取appsettings文件内容的通用功能

     添加通用读取配置文件功能 在Wsk.Core.Package项目下,新增Microsoft.Extensions.Configuration包: 在启动项目下,设置appsettings.json属 ...

  9. 缩放 transform

    转换属性 transform 转换是css3中的一个特征,可以实现元素的缩放,位移,变形. 作用: 使元素在位置或者形状上发生一定的改变. 属性: transform 属性值: scale:缩放(一般 ...

  10. 程序员与年龄:四十岁普通开发、三十五岁首席架构、三十岁基层Leader

    最近,有一个词儿特别热门--躺平.有没有人跟你说过:"躺平说起来容易,做起来更容易." 和躺平相对的是另外一个词--内卷,群聊的时候,已经很多次看过草卷起来了.jpg表情包.某些节 ...