python求解汉诺塔游戏

 更新时间:2020年07月09日 17:09:00   作者:TakingCoding4Granted  
这篇文章主要为大家详细介绍了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

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

相关文章

  • 详解Pytorch中的tensor数据结构

    详解Pytorch中的tensor数据结构

    torch.Tensor 是一种包含单一数据类型元素的多维矩阵,类似于 numpy 的 array,这篇文章主要介绍了Pytorch中的tensor数据结构,需要的朋友可以参考下
    2022-09-09
  • python 处理微信对账单数据的实例代码

    python 处理微信对账单数据的实例代码

    本文通过实例代码给大家介绍了python 处理微信对账单数据,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Python实现TXT数据转三维矩阵

    Python实现TXT数据转三维矩阵

    在数据处理和分析中,将文本文件中的数据转换为三维矩阵是一个常见的任务,本文将详细介绍如何使用Python实现这一任务,感兴趣的小伙伴可以了解下
    2024-01-01
  • python学习笔记--将python源文件打包成exe文件(pyinstaller)

    python学习笔记--将python源文件打包成exe文件(pyinstaller)

    这篇文章主要介绍了通过将pyinstallerpython源文件打包成exe文件的方法,需要的朋友可以参考下
    2018-05-05
  • Python中的字符串切片(截取字符串)的详解

    Python中的字符串切片(截取字符串)的详解

    这篇文章主要介绍了Python中的字符串切片(截取字符串)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 通过python实现随机交换礼物程序详解

    通过python实现随机交换礼物程序详解

    这篇文章主要介绍了通过python实现随机交换礼物程序详解的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python如何基于rsa模块实现非对称加密与解密

    Python如何基于rsa模块实现非对称加密与解密

    这篇文章主要介绍了Python如何基于rsa模块实现非对称加密与解密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python正则表达式分组概念与用法详解

    Python正则表达式分组概念与用法详解

    这篇文章主要介绍了Python正则表达式分组概念与用法,结合具体实例形式较为详细的分析了Python正则表达式中分组、引用、断言等概念与相关使用技巧,需要的朋友可以参考下
    2017-06-06
  • Python 异常处理Ⅳ过程图解

    Python 异常处理Ⅳ过程图解

    这篇文章主要介绍了Python 异常处理Ⅳ过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python3 使用cookiejar管理cookie的方法

    Python3 使用cookiejar管理cookie的方法

    今天小编就为大家分享一篇Python3 使用cookiejar管理cookie的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论