Discuss / Python / 经典问题。给各位解惑一下。

经典问题。给各位解惑一下。

Topic source

###先贴答案

    if n == 1:
        print(a, '-->', c) #如只有一个盘子,从A柱直接移动它到终点C柱
    else:
        move(n-1,a,c,b)  #如果不止一个盘子,先把上面的n-1个盘子移到B柱去
        move(1,a,c,b) # 然后把最下面的盘子移到终点C
        move(n-1,b,a,c) # 现在,不要去管那个已经移动到C柱的大盘子,相当于A,B两柱交换了位置,C柱还是终点。

###要点 其实就是一个简单的分治法,在这个例子中就是:只管处理眼前的这个盘子。

五个五竹

#2 Created at ... [Delete] [Delete and Lock User]

汉诺塔有一个规则就是大盘子不能放在小盘子上,你这样就相当于违法了规则

叮咚0806

#3 Created at ... [Delete] [Delete and Lock User]

正解


  • 1

Reply