python求解汉诺塔游戏


Posted in Python onJuly 09, 2020

本文实例为大家分享了python求解汉诺塔游戏的具体代码,供大家参考,具体内容如下

一、问题定义

百度百科定义:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照从小到大顺序摞着64片黄金圆盘。大梵天命令婆罗门借助其中一根柱子,把64片黄金圆盘重新摆放到第三个根柱子上。并且规定,在小黄金圆盘上不能放大的黄金圆盘,在三根柱子之间一次只能移动一个圆盘。

例如,如果黄金圆盘只有3片,则为了满足游戏规则,那么必须按照如下图所示的8个步骤完成:

python求解汉诺塔游戏

二、代码实现

# 将n个盘子借助y柱从x柱移动到z柱
def hanoi(n, x, y, z):

 count = 0
 if n == 1: # 递归出口
  print(x, ' --> ', z)
  return 1
 else:
  # 将前n - 1个盘子借助z柱从x柱移动到y柱上
  count += hanoi(n - 1, x, z, y) # 递归调用

  # 将最底下的1个盘子从x柱移动到z柱上
  count += hanoi(1, x, y, z)

  # 将n - 1个盘子借助x柱从y柱移动到z柱上
  count += hanoi(n - 1, y, x, z) # 递归调用

  return count


def main():

 hanoi_level = input("请输入汉诺塔层数:")
 print("总共移动次数为%d" % hanoi(int(hanoi_level), 'X', 'Y', 'Z'))


if __name__ == '__main__':
 main()

当黄金圆盘为4层时,代码的输出结果为:

请输入汉诺塔层数:4
X --> Y
X --> Z
Y --> Z
X --> Y
Z --> X
Z --> Y
X --> Y
X --> Z
Y --> Z
Y --> X
Z --> X
Y --> Z
X --> Y
X --> Z
Y --> Z
总共移动次数为15

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python计时相关操作详解【time,datetime】
May 26 Python
python实现学生管理系统
Jan 11 Python
Python实现的生产者、消费者问题完整实例
May 30 Python
python设置值及NaN值处理方法
Jul 03 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
Python 实现数据结构中的的栈队列
May 16 Python
人工神经网络算法知识点总结
Jun 11 Python
Django MEDIA的配置及用法详解
Jul 25 Python
Python函数生成器原理及使用详解
Mar 12 Python
pandas DataFrame运算的实现
Jun 14 Python
python怎么判断素数
Jul 01 Python
Django中Aggregation聚合的基本使用方法
Jul 09 #Python
Python  word实现读取及导出代码解析
Jul 09 #Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 #Python
实例讲解Python 迭代器与生成器
Jul 08 #Python
opencv 阈值分割的具体使用
Jul 08 #Python
如何表示python中的相对路径
Jul 08 #Python
如何卸载python插件
Jul 08 #Python
You might like
php 验证码制作(网树注释思想)
2009/07/20 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
php 面向对象的一个例子
2011/04/12 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
python制作一个桌面便签软件
2015/08/09 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
python使用matplotlib绘制热图
2018/11/07 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
行政主管职责范本
2014/03/07 职场文书
读书小明星事迹材料
2014/05/03 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
2014年环卫工作总结
2014/11/22 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
win10更新失败无限重启解决方法
2022/04/19 数码科技