Discuss / Python / 作业

作业

Topic source
    if n==1:
        print(a,'-->',c)
    else:
        move(n-1,a,c,b)
        move(1,a,b,c)
        move(n-1,b,a,c)

简单地说下思路,移动n个A到C,可拆分为3个步骤: 1、从A移动n-1个到B, 2、从A移动最下方到C, 3、从B移动n-1个到C。 正对应以上的3句代码,那么move(3,a,b,c)可拆分为:

#move(3,a,b,c)
    move(2,a,c,b)
    move(1,a,b,c)
    move(2,b,a,c)

而move(2,a,c,b)又可拆分为:

#move(2,a,c,b)
    move(1,a,b,c)
    move(1,a,c,b)
    move(1,c,a,b)

依此类推...

分析的很透彻

以前看careercup的时候写过汉诺塔,结果这次死活想不起来解题思路了。多谢分析,很清晰!


  • 1

Reply