Python递归实现汉诺塔算法示例


Posted in Python onMarch 19, 2018

本文实例讲述了Python递归实现汉诺塔算法。分享给大家供大家参考,具体如下:

最近面试题,面试官让我5分钟实现汉诺塔算法(已然忘记汉诺塔是啥)。

痛定思痛,回来查了一下汉诺塔的题目和算法。题干与实现如下:

A基座有64个盘子,大在下小在上,每次移动一个盘子,每次都需要大在下小在上,全部移动到B基座,C基座为辅助基座。

# -*- coding:utf-8 -*-
# 汉诺塔回溯递归实现
# 假设参数中初始杆为a,借助杆为c,阶段终止杆为b
# 第一步,a状态借助b移动到c
# 第二步,a移动到b
# 第三步,c借助a移动到b
class Solution:
  def hanoi(self, n, a, b, c):
    global lishan
    if n > 0:
      Solution.hanoi(self, n-1, a, c, b)
      b.append(lishan[n-1])
      a.remove(lishan[n-1])
      Solution.hanoi(self, n-1, c, b, a)
so = Solution()
n = 3
global lishan
lishan = [x for x in xrange(n)]
A = [x for x in xrange(n)]
B = []
C = []
so.hanoi(3, A, B, C)print B

运行结果:

[2, 1, 0]

回溯递归,设计起来还是很有难度的(在没有背过这个题目的前提下)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
Python 描述符(Descriptor)入门
Nov 20 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
python读取Excel表格文件的方法
Sep 02 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
Python图片的横坐标汉字实例
Dec 04 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
Python实现仓库管理系统
May 30 Python
Python实现替换文件中指定内容的方法
Mar 19 #Python
python书籍信息爬虫实例
Mar 19 #Python
python中字符串比较使用is、==和cmp()总结
Mar 18 #Python
Python使用zip合并相邻列表项的方法示例
Mar 17 #Python
Python zip()函数用法实例分析
Mar 17 #Python
Python iter()函数用法实例分析
Mar 17 #Python
Python callable()函数用法实例分析
Mar 17 #Python
You might like
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
js实现图片轮播效果
2015/12/19 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
对python模块中多个类的用法详解
2019/01/10 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
Python是什么 Python的用处
2020/05/26 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
Python devel安装失败问题解决方案
2020/06/09 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
美术专业学生个人自我评价
2013/09/19 职场文书
工作失职检讨书范文
2014/01/16 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
上课不认真检讨书
2014/09/17 职场文书