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程序的执行原理
Apr 11 Python
python文件操作之目录遍历实例分析
May 20 Python
python实现简单购物商城
May 21 Python
python实现求最长回文子串长度
Jan 22 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
python递归函数绘制分形树的方法
Jun 22 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
python3.7 的新特性详解
Jul 25 Python
python动态文本进度条的实例代码
Jan 22 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
Python多线程正确用法实例解析
May 30 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
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
一个简单计数器的源代码
2006/10/09 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
重命名批处理python脚本
2013/04/05 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
python随机取list中的元素方法
2018/04/08 Python
python中判断文件结束符的具体方法
2020/08/04 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
道路建设实施方案
2014/03/18 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
财政局长个人总结
2015/03/04 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
2016国庆促销广告语
2016/01/28 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
MySQL基础(二)
2021/04/05 MySQL
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏