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 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

win2d 画出好看的图形

本文告诉大家,win2d 不需要从零开始做,以前做出来的很多库其实只需要做很小修改就可以做出好看的效果,而且用在 UWP 上。本文修改原先 大神写的 GDI 图...

631
来自专栏Ryan Miao

JSP自定义tag

前端需要调用后端的配置,想起velocity-tools。然而jsp的话,目前只能想到tag和EL表达式了。 Tag相当好写,jsp2.0提供了简化写法: 编写...

2807
来自专栏Android知识点总结

2-VIV-Android控件之res资源加载

722
来自专栏数据小魔方

sparklines迷你图系列15——Composition(BoxPlot)

今天要跟大家分享的是sparklines迷你图系列14——BoxPlot。 箱线图是用于呈现数据分布形态(功能类似直方图)的一种图表,对于连续型数据,箱线图可以...

2624
来自专栏Jack的Android之旅

模仿QQ运动item的界面

是不是很像呢,那具体是实现是怎样的呢,即使概括的来说就是 1.计算各个变量的值(记得是会随整个View的大小变化而变化)。 2其次利用好canvas.tra...

723
来自专栏静默虚空的博客

HTML 快速指南

快速指南 本章节提供了 HTML 最常用标签的简单实用示例。 你可以将其当做速查手册。 基础 <!DOCTYPE html> <html> <head>...

18510
来自专栏海说

JTable常见用法细则+设置某列可编辑+滚动表格

JTable常见用法细则 JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一. 创建表...

2470
来自专栏菩提树下的杨过

As3.0中的位图(Bitmap/BitmapData)编程

As3.0中的位图(Bitmap/BitmapData)编程功能十分丰富,下面这些是官方文档上的基本示例: 1.位图使用(模糊)滤镜 //创建一个矩形区域的Bi...

2966
来自专栏简书专栏

Pyechart入门

pyecharts是一个用于生成echarts图表的类库。echarts是百度开源的一个数据可视化库,用echarts生成的图可视化效果非常棒。使用pyecha...

3793
来自专栏听雨堂

VB6对滚轮的支持

        我需要对Mapx控件支持鼠标滚轮,找了一个可以使用的代码,来自         http://blog.csdn.net/areful/arch...

19310

扫码关注云+社区