記住這個規律,以后玩漢諾塔基本上就是體力勞動了。
規律:先小后大,單左雙右,循環。
設3個柱子分別是甲,乙,丙,把3根柱子看成一個循環,也就是說,甲的右邊是乙,乙的右邊是丙,而丙的右邊則回到甲,同理,甲的左邊就是丙。簡單點,記住丙的右邊是甲,和甲的左邊是丙就行了。盤子分別是盤1,盤2,盤3,盤4……盤1最小。
按照“單左雙右”的規律,先移動小的,也就是先移動盤1,再移動盤2,盤3,按順序,把能移動的都移動一次,每次移動一步,如果不符合游戲規則,就移動兩步,還是不符合的話,就找到盤1,重新按照“單左雙右”的規則走,直到完成游戲。
例:3個盤子,單數,向左走。1,盤1向左移動一步,到丙柱。2,盤2向左移動一步,不符合游戲規則,移動兩步,到乙柱。3,盤3向左移動一步,不符合游戲規則,移動兩步,不符合游戲規則。找到最小的盤1,向左移動一步,移動到乙柱。4,盤2被盤1壓住,無法移動。盤3向左移動一步,到丙柱。5,找到最小的盤1,向左移動一步,到甲柱。6,盤2向左移動一步,不符合游戲規則,移動兩步,到丙柱。7,盤3被盤2壓住,無法移動。找到最小的盤1,向左移動一步,到丙柱。游戲完成。
原文鏈接:http://blog.sina.com.cn/s/blog_68507b0a0100onrr.html
附:n層漢諾塔解法的Python源碼
def move(n, a, b, c): if n ==1: return move(n-1, a, c, b) print(a, '-->', c) move(n-1, b, a, c)move(5, 'A', 'B', 'C')
新聞熱點
疑難解答