python中八皇后如何运算的_python解决八皇后算法

展开全部

global col #定义一些全局变量

global row

global pos_diag

global nag_diag

global count

def output():

''' 输出一种有效结果

'''

global count

print row

count += 1

def do_queen(i):

''' 生成所有正确解

@param i: 皇后的数目

'''

for j in range(0, 8): #依次62616964757a686964616fe59b9ee7ad9431333335323462尝试0~7位置

if col[j] == 1 and pos_diag[i-j+7] == 1 and nag_diag[i+j] == 1: #若该行,正对角线,负对角线上都没有皇后,则放入i皇后

row[i] = j

col[j] = 0 #调整各个列表状态

pos_diag[i-j+7] = 0

nag_diag[i+j] = 0

if i < 7:

do_queen(i+1) #可递增或递减

else:

output() #产生一个结果,输出

col[j] = 1 #恢复各个列表状态为之前的

pos_diag[i-j+7] = 1

nag_diag[i+j] = 1

if __name__ == '__main__':

col = [] #矩阵列的列表,存储皇后所在列,若该列没有皇后,则相应置为1,反之则0

row = [] #矩阵行的列表,存放每行皇后所在的列位置,随着程序的执行,在不断的变化中,之间输出结果

pos_diag = [] #正对角线,i-j恒定,-7~0~7,并且b(i)+7统一到0~14

nag_diag = [] #负对角线,i+j恒定,0~14

count = 0

for index in range(0, 8): #一些初始化工作

col.append(1)

row.append(0)

for index in range(0, 15):

pos_diag.append(1)

nag_diag.append(1)

do_queen(0) #开始递归,先放一个,依次递增,反过来,从7开始递减也可

print 'Totally have %d solutions!' % count

输出:

[0, 4, 7, 5, 2, 6, 1, 3]

[0, 5, 7, 2, 6, 3, 1, 4]

[0, 6, 3, 5, 7, 1, 4, 2]

[0, 6, 4, 7, 1, 3, 5, 2]

[1, 3, 5, 7, 2, 0, 6, 4]

[1, 4, 6, 0, 2, 7, 5, 3]

[1, 4, 6, 3, 0, 7, 5, 2]

[1, 5, 0, 6, 3, 7, 2, 4]

[1, 5, 7, 2, 0, 3, 6, 4]

[1, 6, 2, 5, 7, 4, 0, 3]

[1, 6, 4, 7, 0, 3, 5, 2]

[1, 7, 5, 0, 2, 4, 6, 3]

[2, 0, 6, 4, 7, 1, 3, 5]

[2, 4, 1, 7, 0, 6, 3, 5]

[2, 4, 1, 7, 5, 3, 6, 0]

[2, 4, 6, 0, 3, 1, 7, 5]

[2, 4, 7, 3, 0, 6, 1, 5]

[2, 5, 1, 4, 7, 0, 6, 3]

[2, 5, 1, 6, 0, 3, 7, 4]

[2, 5, 1, 6, 4, 0, 7, 3]

[2, 5, 3, 0, 7, 4, 6, 1]

[2, 5, 3, 1, 7, 4, 6, 0]

[2, 5, 7, 0, 3, 6, 4, 1]

[2, 5, 7, 0, 4, 6, 1, 3]

[2, 5, 7, 1, 3, 0, 6, 4]

[2, 6, 1, 7, 4, 0, 3, 5]

[2, 6, 1, 7, 5, 3, 0, 4]

[2, 7, 3, 6, 0, 5, 1, 4]

[3, 0, 4, 7, 1, 6, 2, 5]

[3, 0, 4, 7, 5, 2, 6, 1]

[3, 1, 4, 7, 5, 0, 2, 6]

[3, 1, 6, 2, 5, 7, 0, 4]

[3, 1, 6, 2, 5, 7, 4, 0]

[3, 1, 6, 4, 0, 7, 5, 2]

[3, 1, 7, 4, 6, 0, 2, 5]

[3, 1, 7, 5, 0, 2, 4, 6]

[3, 5, 0, 4, 1, 7, 2, 6]

[3, 5, 7, 1, 6, 0, 2, 4]

[3, 5, 7, 2, 0, 6, 4, 1]

[3, 6, 0, 7, 4, 1, 5, 2]

[3, 6, 2, 7, 1, 4, 0, 5]

[3, 6, 4, 1, 5, 0, 2, 7]

[3, 6, 4, 2, 0, 5, 7, 1]

[3, 7, 0, 2, 5, 1, 6, 4]

[3, 7, 0, 4, 6, 1, 5, 2]

[3, 7, 4, 2, 0, 6, 1, 5]

[4, 0, 3, 5, 7, 1, 6, 2]

[4, 0, 7, 3, 1, 6, 2, 5]

[4, 0, 7, 5, 2, 6, 1, 3]

[4, 1, 3, 5, 7, 2, 0, 6]

[4, 1, 3, 6, 2, 7, 5, 0]

[4, 1, 5, 0, 6, 3, 7, 2]

[4, 1, 7, 0, 3, 6, 2, 5]

[4, 2, 0, 5, 7, 1, 3, 6]

[4, 2, 0, 6, 1, 7, 5, 3]

[4, 2, 7, 3, 6, 0, 5, 1]

[4, 6, 0, 2, 7, 5, 3, 1]

[4, 6, 0, 3, 1, 7, 5, 2]

[4, 6, 1, 3, 7, 0, 2, 5]

[4, 6, 1, 5, 2, 0, 3, 7]

[4, 6, 1, 5, 2, 0, 7, 3]

[4, 6, 3, 0, 2, 7, 5, 1]

[4, 7, 3, 0, 2, 5, 1, 6]

[4, 7, 3, 0, 6, 1, 5, 2]

[5, 0, 4, 1, 7, 2, 6, 3]

[5, 1, 6, 0, 2, 4, 7, 3]

[5, 1, 6, 0, 3, 7, 4, 2]

[5, 2, 0, 6, 4, 7, 1, 3]

[5, 2, 0, 7, 3, 1, 6, 4]

[5, 2, 0, 7, 4, 1, 3, 6]

[5, 2, 4, 6, 0, 3, 1, 7]

[5, 2, 4, 7, 0, 3, 1, 6]

[5, 2, 6, 1, 3, 7, 0, 4]

[5, 2, 6, 1, 7, 4, 0, 3]

[5, 2, 6, 3, 0, 7, 1, 4]

[5, 3, 0, 4, 7, 1, 6, 2]

[5, 3, 1, 7, 4, 6, 0, 2]

[5, 3, 6, 0, 2, 4, 1, 7]

[5, 3, 6, 0, 7, 1, 4, 2]

[5, 7, 1, 3, 0, 6, 4, 2]

[6, 0, 2, 7, 5, 3, 1, 4]

[6, 1, 3, 0, 7, 4, 2, 5]

[6, 1, 5, 2, 0, 3, 7, 4]

[6, 2, 0, 5, 7, 4, 1, 3]

[6, 2, 7, 1, 4, 0, 5, 3]

[6, 3, 1, 4, 7, 0, 2, 5]

[6, 3, 1, 7, 5, 0, 2, 4]

[6, 4, 2, 0, 5, 7, 1, 3]

[7, 1, 3, 0, 6, 4, 2, 5]

[7, 1, 4, 2, 0, 6, 3, 5]

[7, 2, 0, 5, 1, 4, 6, 3]

[7, 3, 0, 2, 5, 1, 6, 4]

Totally have 92 solutions!

本回答由提问者推荐

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实现复制粘贴的计算器_软帝学院教你用java编写计算器(三)

教你用java编写计算器(三)import java.awt.Color;import java.awt.Dimension;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax…

php 公众号验证回调方法_如何进行公众号文章收集 两种收集方法详解

大家都知道优质的公众号吸引用户最关键的就是要优质的文章&#xff0c;所以会有专人负责进行公众号文章收集工作&#xff0c;下面我们跟随拓途数据一起来了解一下如何进行公众号文章收集的相关资料吧。 如何进行公众号文章收集方案一&#xff1a;基于搜狗入口 在网上能搜索到的…

mysql保存一个文件怎么打开_悄悄告诉你,MySQL 通过SQL语句导出到Excel的方法-sql文件怎么打开...

执行SQL语句select fullname,time,endtime,closed from chat_archive into outfile c:/xxx.xls注意&#xff1a;因为office默认的是gb2312编码&#xff0c;服务器端生成的很有可能是utf-8编码&#xff0c;此时有几种选择1、把查询出来的结果转换为GB2312格式(字段fullname)sele…

gerber文件怎么导贴片坐标_SMT贴片机在线编程调试

SMT贴片机分为离线编程和在线编程调试&#xff0c;在线编程调试就是在 SMT 贴片机上对离线编程的程序进行优化调试编辑。SMT 贴片机在线编程调试总体上就是两个步骤&#xff0c;一个是离线编程的程序进行编程&#xff0c;然后就是总体检查并备份到贴片机电脑内。一、在 SMT 贴片…

java销售额查询_用JSP+JavaBean开发模式实现一个销售额的查询

数据库使用mysql&#xff0c;如下&#xff1a;vo包的Sales类&#xff1a;package com.vo;public class Sales {public String salestime;public float salesnum;public String getSalestime() {return salestime;}public void setSalestime(String salestime) {this.salestime …

python支持函数式编程么_Python 函数式编程

f absprint(f(-20))三、匿名函数其实就是指向函数的变量abs len# print(abs(-10))print(abs([1,2,3,4])四、高阶函数&#xff1a;能接收函数做参数的函数1.变量可以指向函数2.函数的参数可以接收变量3.一个函数可以接收另一个函数作为参数4.能接收函数作参数的函数就是高阶函…

spss数据_怎么建立SPSS数据库、录入数据?

怎么把收集的问卷、测试数据等原始资料转变为“SPSS数据库”&#xff1f;数据包括离散&#xff08;单选题、多选题等&#xff09;、连续&#xff08;年龄、身高、肺活量、人数等&#xff09;两类。以下面四个题目为例&#xff0c;介绍采用SPSS建立数据库的方法&#xff1a;A2.学…

php 开发一个聊天系统,ajax+php 实现一个简单的在线聊天室功能(附带源码)

通过ajax和setInterval()函数&#xff0c;配合phpmysql实现一个简单的在线聊天室的功能。附带详细源码案例。这个聊天室是一个简单的聊天室&#xff0c;通过javascript setInterval()和ajax函数&#xff0c;不停的去获取服务器获取最新的聊天数据信息&#xff0c;并无刷新的写入…

怎么下载完整的python_怎么下载python并安装

Q5&#xff1a;如何在win7下安装Python及配置安装配置如下&#xff1a;下载安装 Pythonhttp://www.python.org/download/http://www.python.org/ftp/python/2.6/python-2.6.msihttp://www.python.org/ftp/python/2.6/python-2.6.amd64.msi如下载 Python 2.6&#xff0c;安装目录…

织梦 php 传值,php获取post参数的几种方式

php获取post参数的几种方式&#xff0c;ajax提交数据的几种类型&#xff0c;PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。1、$_POST[paramName] 只有在Content-Type为application/x-www-form-urlencoded或者为multipart/form-data的 时候&#x…

内网python 仓库_GitHub - xanarry/LanTrans-desktop: 这是一个用python写的局域网传文件工具, 跨平台, 仓库中还有安卓版的工程...

文档(代码比较乱)ubuntu效果windows效果主程序, Lantans_desktop.py 运行时所需环境&#xff1a; python3.4, PyQT5如果接收过程无法被扫描到, 请关闭防火墙接收文件使用:打开软件->选择 接受 ->选择保存路径->点击 等待接收, 然后等待局域网中的发送方即可.注意:如果…

php进度条如何计算,投票最后显示进度条的百分比怎么算

我自己写的一个投票结果显示&#xff0c;其中设定票数最多的那个进度条为100&#xff05;。public class voteresult : System.Web.UI.Page{protected System.Web.UI.HtmlControls.HtmlTableCell td_vote;protected System.Web.UI.HtmlControls.HtmlTable tab_result;private v…

函数的返回值可以不用赋值_C语言学习|函数的应用《一》

C语言为程序的结构提供了函数和模块一、函数的定义与使用《编程之道》中写道&#xff1a;“一个程序应该是灵活自由的、它的子过程就像串在一根线子上的珍珠。”子过程在C语言中被称为”函数“。程序的执行从主函数开始&#xff0c;往复、循环、迭代地调用一个又一个函数。函数…

java泛型和类型通配符,java – 泛型,类型参数和通配符

通用类型要了解的主要内容是它们不是协变的。所以你可以这样做&#xff1a;final String string "string";final Object object string;以下将不会编译&#xff1a;final List strings ...final List objects strings;这是为了避免您规避泛型类型的情况&#xff…

python学习指令_由Python到深度学习入门之常用命令

检查Anaconda是否成功安装&#xff1a;conda --version检测目前安装了哪些环境&#xff1a;conda info --envs检查目前有哪些版本的python可以安装&#xff1a;conda search --full-name python安装python 3.5版本(命令中的tensorflow是一个本地电脑的一个python环境名称不是te…

php的yii框架配置,php配置yii框架_PHP教程

个人爱好&#xff0c;研究了下php的yii框架。首先&#xff0c;研究yii框架的前提是下载php的一键安装和zend studio.. php的一键安装给出连接如下http://www.download3k.com/Install-XAMPP.html 。。。zend studion的链接如下http://www.zend.com/en/products/studio/downloads…

python box2d模拟平抛运动_论述如何基于Box2D模拟星球重力效果

作者&#xff1a;Emanuele Feronato随着《Angry Birds Space》的问世&#xff0c;我想你定非常疑惑要如何通过Box2D模拟星球重力。基本原理非常简单。首先&#xff0c;太空没有重力&#xff0c;所以你将通过如下方式创建没有重力的b2World世界&#xff1a;private var world:b2…

蚂蚁庄园 php源码,蚂蚁庄园五体投地

蚂蚁庄园五体投地&#xff0c;蚂蚁庄园小课堂的题目你答对了吗&#xff1f;今天题目有点难&#xff0c;大家可能不清楚&#xff0c;人们常常会对极其敬重的人五体投地&#xff0c;五体投地的五体指的是什么意思呢&#xff1f;“五体”又称“五轮”&#xff0c;指双肘、双膝和额…

python与javascript的区别_python与js区别有哪些

数据类型js和python都是动态语言&#xff0c;a 1; a abc&#xff0c;a这个变量是动态的&#xff0c;类型是随时可以被更改的。而在java中就是静态语言变量&#xff0c;int a 1&#xff1b;a abc 就会报错。基本命令1.输出js里面的console.log()、document.write()、window.…

fsk调制解调实验报告 matlab,基于MATLAB的-FSK调制与解调-通信原理实验

《基于MATLAB的-FSK调制与解调-通信原理实验》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《基于MATLAB的-FSK调制与解调-通信原理实验(2页珍藏版)》请在人人文库网上搜索。1、实验五 FSK调制与解调1实验目的和要求用MATLAB实现二进制序列的fsk调制与解调2实验内容用…