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 相关文章推荐
python计算文本文件行数的方法
Jul 06 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 Python
python得到电脑的开机时间方法
Oct 15 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
python监测当前联网状态并连接的实例
Dec 18 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
详解python使用turtle库来画一朵花
Mar 21 Python
python使用KNN算法识别手写数字
Apr 25 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 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调用MySQL的存储过程的实现代码
2008/08/12 PHP
PHP学习 变量使用总结
2011/03/24 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
php实现将Session写入数据库
2015/07/26 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python里隐藏的“禅”
2014/06/16 Python
17个Python小技巧分享
2015/01/23 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
详解python中的异常捕获
2020/12/15 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
营销总经理岗位职责
2014/02/02 职场文书
初中军训感想300字
2014/03/05 职场文书
煤矿安全承诺书
2014/05/22 职场文书
优秀团队申报材料
2014/12/26 职场文书
采购员岗位职责
2015/02/03 职场文书
开会通知
2015/04/20 职场文书
导游词之台湾阿里山
2019/10/23 职场文书