汉诺塔问题

我们需要解决的问题正是  Hanoi (a,b,c,n)   //上文中的状态0

1、把A上的n-1个移动到B:   Hanoi (a,c,b,n-1); // 操作结束为状态1

2、把A上的大盘子移动到C move(a,c)

3、把B上的n-1移动到A     Hanoi (b,c,a,n-1);  //操作结束位状态2(和状态1相比只是规模变小)

def mov(self,n,a,b,c):
        if n == 1:
            self.result.append('from %s to %s'%(a,c))
        else:
            self.mov(n-1, a, c, b)
            self.mov(1, a, b, c)
            self.mov(n-1, b, a, c)
    def towerOfHanoi(self, n):
        self.result = []
        # write your code here
        a = 'A'
        b = 'B'
        c = 'C'
        self.mov(n, a, b, c)
        return self.result

你可能感兴趣的:(汉诺塔问题)