汉诺塔python代码解释_python求解汉诺塔游戏
本文实例为大家分享了python求解汉诺塔游戏的具体代码,供大家参考,具体内容如下
一、问题定义
百度百科定义:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照从小到大顺序摞着64片黄金圆盘。大梵天命令婆罗门借助其中一根柱子,把64片黄金圆盘重新摆放到第三个根柱子上。并且规定,在小黄金圆盘上不能放大的黄金圆盘,在三根柱子之间一次只能移动一个圆盘。
例如,如果黄金圆盘只有3片,则为了满足游戏规则,那么必须按照如下图所示的8个步骤完成:
二、代码实现
# 将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求解汉诺塔游戏相关推荐
- 汉诺塔python代码解释_python实现汉诺塔算法
题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...
- 汉诺塔python代码解释_Python-汉诺塔原理分析
最近在"廖雪峰的官方网站"学习Python,遇到汉诺塔递归问题百思不得其解,先是百度了汉诺塔原理,然后查看了别人的写的文章,通过整理汇总,希望能够帮助其他人理解. 汉诺塔原理:(来 ...
- 天天向上的力量python代码解释_python天天向上的力量
# 天天向上的力量 持续的价值 ''' 千分之一的力量 一年365天,每天进步1%,累积进步多少? 一年365天,每天退步1%,累积剩下多少? ''' dayUp1 = pow(1.001,365) ...
- python写一个游戏多少代码-使用50行Python代码从零开始实现一个AI平衡小游戏
集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何用 50 行 Python 代码创建一个 AI,使用增强学习技术,玩耍一个保持杆子平衡的小游戏.所用环境为标准的 OpenAI Gym, ...
- 50行python游戏代码_使用50行Python代码从零开始实现一个AI平衡小游戏
使用50行Python代码从零开始实现一个AI平衡小游戏 发布时间:2020-10-23 09:26:14 来源:脚本之家 阅读:74 集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何 ...
- python汉诺塔游戏_python求解汉诺塔游戏
本文实例为大家分享了python求解汉诺塔游戏的具体代码,供大家参考,具体内容如下 一.问题定义 百度百科定义:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.据说大梵天创造世界的时候做了三 ...
- python代码解释4个作用域_Python中作用域的深入讲解
前言 作用域是指变量的生效范围,例如本地变量.全局变量描述的就是不同的生效范围. python的变量作用域的规则非常简单,可以说是所有语言中最直观.最容易理解的作用域. 在开始介绍作用域之前,先抛一个 ...
- em算法python代码_EM 算法求解高斯混合模型python实现
注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...
- python代码架构_Python架构
一.自动化测试框架 1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本, ...
- python代码风格_Python编码风格,看这篇就够了
如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性.确实,对于 Python 来说,其高可读性一直是 Python 这门语言设计的核心.一个不 ...
最新文章
- python安装包为什么这么小-python为什么要安装到c盘
- [转载]基于数据挖掘技术入侵检测系统研究
- linux几个常用的环境变量配置文件
- php怎麼讲$字段的值截取第一个字,PHP截取中文字符串方法总结
- Unity3d截图两种方式
- virtualenv 模块
- html get请求_99% 的人都理解错了 HTTP 中 GET 与 POST 的区别【面试必问】
- Nginx解决前端调用后端接口跨域问题
- java redis 原子操作_7000字 Redis 超详细总结笔记 !建议收藏
- 1195 巧妙推算走楼梯(宁波大学oj)
- 删除上传文件中可能包含的空行
- 关于如何使用IfcRelAggregates来对IFC中的元素进行关联
- 尚硅谷大数据Spark之RDD转换算子学习笔记及面试题
- 使用Oracle的sshUserSetup.sh脚本配置SSH互信
- pod中mysql配置文件修改_Pod中的secret,configmap,downwardapi的使用记录
- 山东大学项目实训——解决微信小程序无法获得用户信息问题
- ios查看苹果app的下载量,日活,销售情况等相关数据
- 定位器百科:老人、小孩的GPS定位器是如何工作的
- VB.net版机房收费系统——结账功能实现(代码部分)
- Linux排查和防守