Day5、Python

题目 汉诺塔 1、程序分析     Hanoi塔问题,算法分析如下,设A上有n个盘子(编号由上到下:1、2、3……、n)。A:初始塔,B:中转塔,C:目标塔     a、如果n=1,则将盘子从A塔直接移动到C塔(借助B塔)。     b、如果n=3,则:     (1)将A塔上编号1~2的盘子(2个盘子)移动到B塔上(借助C塔);     (2)将A塔上编号3的盘子(最后一个盘子)移动到C塔上;      (3)将B塔上编号1~2的盘子(2个盘子)移动到C塔上(借助A塔)。      c、延伸,如果n=num,则:     (1)将A塔上编号1~num-1的盘子(num-1个盘子)移动到B塔上(借助C塔);     (2)将A塔上编号num的盘子(最后一个盘子)移动到C塔上;     (3)将B塔上编号1~num-1的盘子(num-1个盘子)移动到C塔上(借助A塔)。 2、程序实现

#tpoic          :       汉诺塔   
#File Name      :       Hanoi.py
#Author         :       Jack Cui
#Created        :       7 April 2016

#第一个塔A为初始塔,中间的塔B为中转塔,最后一个塔C为目标塔
def move(n,n_from,n_to):
        global i        #声明i是全局变量
        print('第%d步:%d号盘子  初始塔%s-->目标塔%s' % (i,n,n_from,n_to))
        i += 1
#汉诺塔移动函数,将n个盘子(借助中转塔)由初始塔上移动到目标塔上
def hanoi(n,n_from,n_transit,n_to):
        if n == 1:
                move(1,n_from,n_to)     #只有一个盘子直接将初始塔A上的盘子移动到目标塔C
        else:
                hanoi(n-1,n_from,n_to,n_transit)#先将初始塔A的前n-1个盘子借助目标塔C移动到中转塔B上
                move(n,n_from,n_to)             #将初始塔A上最后一个盘子移动到目标塔C上
                hanoi(n-1,n_transit,n_from,n_to)#最后将中转塔上的n-1个盘子移动到目标塔上

if __name__ == '__main__':
        i = 1
        n = int(input('请输入盘子的个数:'))
        print('盘子移动的方法如下:')
        hanoi(n,'A','B','C')

3、显示结果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python模拟汉诺塔问题移动盘子的过程

据说古代有一个梵塔,塔内有三个底座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动...

4316
来自专栏c#开发者

NSArray 排序方法的实现

Compare method Either you implement a compare-method for your object: -(NSCompar...

2916
来自专栏iOS开发随笔

iOS常用的正则表达式(持续更新)

1303
来自专栏陈满iOS

iOS网络请求之上传图片:从示例到源码解析 -- 以上传Face++SDK回调的图片为例(HYNetworking,AFNetworking,XMNetworking)

本文一开始上传图片以调用HYNetworking的API为例,这个网络框架是以AFNetworking为基础进行的封装。HYNetworking内部实现上传图片...

1502
来自专栏技术之路

精典算法之详解 河内之塔

河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年...

1848
来自专栏陈满iOS

[iOS学习笔记]·FMDB:第三方数据库处理框架·用法示例篇(附源码Demo)

FMDatabase的实例对象_db在执行SQL语句的时候采取类似下面的代码。其中,有两种风格,一种在executeUpdate方法后面直接写上字符串的字面量语...

862
来自专栏wOw的Android小站

[Objective-C] KVC 和 KVO

KVC是一种用间接方式访问类的属性的机制。比如你要给一个类中的属性赋值或者取值,可以直接通过类和点运算符实现,当然也可以使用KVC。不过对于私有属性,点运算符就...

481
来自专栏DannyHoo的专栏

第三方库AF之Post

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

781
来自专栏王大锤

iOS 根据生日得到生肖,星座,年龄的算法

4026
来自专栏DannyHoo的专栏

OC中根据文件路径获取文件大小

NSString * cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, ...

1262

扫码关注云+社区