码迷,mamicode.com
首页 > 编程语言 > 详细

python算法-汉诺塔问题

时间:2018-04-28 23:55:06      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:coding   问题   cal   nbsp   初始   ima   __name__   info   class   

汉诺塔问题

 

初始状态:

技术分享图片

 

思考:当盘子的个数是3的时候,大家写出移动顺序

移动的步骤:

技术分享图片

3个盘子,从ac

1、前面两个盘子,从ab

1)把前面一个盘子,从ac

a->c

2)把第二个盘子,从ab

a->b

3)把c上的盘子,从cb

c->b

2、最后一个盘子,从ac

a->c

3、把b上的两个盘子,从bc

1)把前面一个盘子,从ba

b->a

2)把第二个盘子,从bc

b->c

3)把a上的盘子,从ac

a->c

 

 

 

总结:

n个盘子,从ac

1n-1个盘子从ab

2、最后一个盘子,从ac

3n-1个盘子从bc

 

代码实现:

# encoding=utf-8

 

def hanoi(n,a,b,c):

    if n == 1:

        print a,->,c

    else:

        hanoi(n-1,a,c,b)

        hanoi(1,a,b,c)

        hanoi(n-1,b,a,c)

 

if __name__ == __main__:

    hanoi(3,a,b,c)

 

 

 

python算法-汉诺塔问题

标签:coding   问题   cal   nbsp   初始   ima   __name__   info   class   

原文地址:https://www.cnblogs.com/qingqing-919/p/8969795.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!