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基础教程之序列详解
Aug 29 Python
Python实现从url中提取域名的几种方法
Sep 26 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
appium+python adb常用命令分享
Mar 06 Python
django 读取图片到页面实例
Mar 27 Python
Django多数据库配置及逆向生成model教程
Mar 28 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
Pycharm 2020.1 版配置优化的详细教程
Aug 07 Python
python 实现端口扫描工具
Dec 18 Python
Python Selenium异常处理的实例分析
Feb 28 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
php计算函数执行时间的方法
2015/03/20 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
vue内置指令详解
2018/04/03 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
详解vue 组件注册
2020/11/20 Vue.js
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
python实现高斯投影正反算方式
2020/01/17 Python
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
测量实习生自我鉴定
2013/09/19 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
元旦晚会策划方案
2014/02/18 职场文书
辩论赛主持词
2014/03/18 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
导游词之青城山景区
2019/09/27 职场文书