前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Day5、Python

Day5、Python

作者头像
Jack_Cui
发布2017-12-28 12:16:08
5630
发布2017-12-28 12:16:08
举报
文章被收录于专栏:Jack-Cui

题目 汉诺塔 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、程序实现

代码语言:javascript
复制
#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、显示结果

Ubuntu
Ubuntu
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档