• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python基于右递归解决八皇后问题的方法

python基于右递归解决八皇后问题的方法

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了八皇后问题python,回溯法解决八皇后问题,八皇后问题,八皇后问题c语言,八皇后问题回溯法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了python基于右递归解决八皇后问题的方法。分享给大家供大家参考。具体分析如下:

凡是线性回溯都可以归结为右递归的形式,也即是二叉树,因此对于只要求一个解的问题,采用右递归实现的程序要比回溯法要优美的多。

def Test(queen,n):
 '''这个就不用说了吧,就是检验第n(下标,0-7)行皇后的位置是否合理'''
 q=queen[n]
 for i in xrange(n):
  if queen[i]==q or queen[i]-q==n-i or queen[i]-q==i-n:return False
 return True
def Settle(queen,n):
 '''这个负责安置第n(下标,0-7)行皇后,每次调用,皇后都至少会移动一步'''
 queen[n]+=1
 while queen[n]<8 and not Test(queen,n):queen[n]+=1
 return queen[n]<8
def Solve(queen,n):
 '''这个负责解决第n(下标,0-7)行皇后的安置以及随后所有皇后的安置'''
 if n==8:#安置完所有皇后了,故输出列表
  print queen
  return True#如果设为假,则会尝试所有的安置方案
 else:
  queen[n]=-1#初始化第n行皇后的起始位置(起始位置-1,可安置在0-7)
  while Settle(queen,n):#如果成功安置皇后
   if Solve(queen,n+1):#安置其余皇后
    return True#成功安置,返回真
 return False#失败,返回假
if __name__=='__main__':
 Solve([-1 for i in range(8)],0)#列表的值可以随便设置,因为会初始化
#虽然我们没有进行回溯,但事实上,我们每一个参数相同的Solve函数都尝试了多次
#输出:[0, 4, 7, 5, 2, 6, 1, 3]
#比回溯法容易多了吧

</div>

希望本文所述对大家的Python程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • python基于右递归解决八皇后问题的方法
  • Python中使用装饰器时需要注意的一些问题

相关文章

  • 使用python调用zxing库生成二维码图片详解
  • 利用Python生成文件md5校验值函数的方法
  • python中的对象拷贝示例 python引用传递
  • 一篇文章入门Python生态系统(Python新手入门指导)
  • python每隔N秒运行指定函数的方法
  • 搭建Python的Django框架环境并建立和运行第一个App的教程
  • Python中的装饰器用法详解
  • python抓取网页内容示例分享
  • Python+Opencv识别两张相似图片
  • Python break语句详解

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python通过pil将图片转换成黑白效果的方法
    • 使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
    • Python ftp上传文件
    • 使用Python编写类UNIX系统的命令行工具的教程
    • Python实现简单的可逆加密程序实例
    • Python手机号码归属地查询代码
    • 跟老齐学Python之有容乃大的list(1)
    • Mac下Supervisor进程监控管理工具的安装与配置
    • python统计文本文件内单词数量的方法
    • Python多线程下载文件的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有