對於傳統的漢諾塔遊戲咱們作一個拓展,咱們有從大到小放置的n個圓盤,開始時全部圓盤都放在左邊的柱子上,按照漢諾塔遊戲的要求咱們要把全部的圓盤都移到右邊的柱子上,請實現一個函數打印最優移動軌跡。數組
給定一個int n,表示有n個圓盤。請返回一個string數組,其中的元素依次爲每次移動的描述。描述格式爲: move from [left/mid/right] to [left/mid/right]。app
1
返回:move from left to right
思路:遞歸
代碼實現:
class Hanoi: def chkStep(self, arr, n): # write code here self.initStatus = [1]*n self.allStatus = [[1]*n] self.move(n,1,2,3) i = 0 for s in self.allStatus: if s == arr: return i i = i+1 return -1 def move(self, n, left, mid, right): if n <= 0: return self.move(n-1, left, right, mid) self.change(n, right) self.move(n-1, mid, left, right) def change(self, n, right): self.initStatus[n-1] = right self.allStatus.append(self.initStatus[:])