Discuss / Python / 我来给个解题思路

我来给个解题思路

Topic source

看到这么多人都去网上抄,用N=3、4、5等具体举例什么的,其实有更加直接的解题思路:

move(N,source,through,destination), 即把source上的N个盘经由trhough转移到destination

1.目标就是把最底下那个最大的盘移到C,稍作转换,可以递归为要先把N-1个盘从A经由C移动到B,才能把最后一个盘N从A搬到C,于是有: { move(N-1,A,C,B) A-->C }

2.这里其实已经完成最大盘的移动

3.接下来就是递归了,稍作转换,不就是要把B上的N-1个盘子经由A移动到C?那问题来了,这和把N个盘从A经由B移动到C有什么本质区别?答案当然是完全一致,这也就是递归的真正入口,即: { move(N-1,B,A,C) }


  • 1

Reply