Discuss / Python / 这种思路应该也符合吧?

这种思路应该也符合吧?

Topic source

极大似然

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

1、n=1时,从A柱挪到C柱

2、当n>=2时,首先,将A柱上最小的挪到B柱,压到最底下后暂时忽略它。

3、现在的情形就是A柱有n-1个盘,B柱有一个忽略的盘,C柱无盘。按照move(n-1, a, b, c)的操作一遍。

4、当前情况为A柱空,B柱有一个最小的盘,C柱有n-1个按大小顺序摞起来的盘。这时把B柱最小盘挪到C盘,整体完成。

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

    if n == 1:

        print(a, '-->', c)

    else:

        print(a, '-->', b)

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

        print(b, '-->', c)

    return 0

多情剑

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

思路有问题。“当n>=2时,首先,将A柱上最小的挪到B柱,压到最底下后暂时忽略它。”这个最小的盘上面不能再放别的盘了,所以这是一个不能被忽略的盘。汉诺塔的规则是所有柱子上的盘从上到下都是从小到大的。

我的思路是这样的:

当N>=2时,我们想要把所有的盘从A通过B移到C,那么需要先把A上面N-1个盘通过C转移到B,再把最下面的那个最大的盘从A直接转移到C,然后再把B上面的所有盘通过A转移到C。

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

    if n == 1:

        print(a, '-->', c)

    else: 

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

        print(a, '-->', c)

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

    return

极大似然

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

噢噢,感谢!原来还有“所有柱子上的盘从上到下都是从小到大”的隐藏规则


  • 1

Reply