# UVa 10017 ### 題目連結:[UVa10017](http://domen111.github.io/UVa-Easy-Viewer/?10017) ### 題述: 在資料結構的課程中常常以一種叫做河內塔(the Tower of Hanoi)的遊戲來說明遞迴(recursion)的運作。現在就讓我們來說明一下其規則: 有三根柱子:A、B、C 有n個盤子,每個盤子大小均不相同 一開始時,所有的盤子都疊在A柱子中,並且由上到下盤子是由小到大排列。 遊戲的目的是把所有的盤子從A柱子搬到C柱子。 一次僅能搬動一個盤子。可以搬到空的柱子或是搬到一根柱子而其最上方的盤子比要搬移的盤子大。 你的任務是寫一個程式來一步一步的展示搬移的過程。 在資料結構的課程中常常以一種叫做河內塔(the Tower of Hanoi)的遊戲來說明遞迴(recursion)的運作。現在就讓我們來說明一下其規則: 有三根柱子:A、B、C 有n個盤子,每個盤子大小均不相同 一開始時,所有的盤子都疊在A柱子中,並且由上到下盤子是由小到大排列。 遊戲的目的是把所有的盤子從A柱子搬到C柱子。 一次僅能搬動一個盤子。可以搬到空的柱子或是搬到一根柱子而其最上方的盤子比要搬移的盤子大。 你的任務是寫一個程式來一步一步的展示搬移的過程。 --- 每組測試資料一列,含有2個整數n,m。n(1 <= n <= 250)代表盤子的數目。m(0 <= m <= 2n-1)代表要搬移的次數。並且你可以假設m絕對小於216. n=0,m=0代表輸入結束。 --- 對每一組測試資料,輸出搬移的過程。請參考Sample Output。 ### c++ code: ```cpp= ``` :::success **``sample input``** 3 7 16 2 0 0 ::: :::success **``sample output``** Problem #1 A=> 3 2 1 B=> C=> A=> 3 2 B=> C=> 1 A=> 3 B=> 2 C=> 1 A=> 3 B=> 2 1 C=> A=> B=> 2 1 C=> 3 A=> 1 B=> 2 C=> 3 A=> 1 B=> C=> 3 2 A=> B=> C=> 3 2 1 Problem #2 A=> 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 B=> C=> A=> 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 B=> 1 C=> A=> 16 15 14 13 12 11 10 9 8 7 6 5 4 3 B=> 1 C=> 2 ::: ###### tags: `APCS選修` `C++` `UVa`