--- tags: DICE C --- 23-5 河內塔 === > [name=CHAWTeam] 目錄:[DICE C語言程式破解](/@CHAWTeam/DiceC) 題目 --- ```! 河內塔問題(Tower of Hanoi)是由法國數學家盧卡斯(Édouard Lucas)引進的數學謎題: 在 3 根桿子中,有 1 桿上有 N 個從下數起由大而小的穿孔圓盤。 在每次只能移動一個圓盤,且大盤不能疊在小盤之上的規則之下,你需要以最少的次數將這 N 個圓盤全部移到另一根桿子上。 輸入數字為河內塔高度,請輸出移動過程,最後輸出共移動了幾次,格式如範例輸出所示。 範例輸入: 3 範例輸出: 1: 將第 1 個圓盤由 A 移到 C 2: 將第 2 個圓盤由 A 移到 B 3: 將第 1 個圓盤由 C 移到 B 4: 將第 3 個圓盤由 A 移到 C 5: 將第 1 個圓盤由 B 移到 A 6: 將第 2 個圓盤由 B 移到 C 7: 將第 1 個圓盤由 A 移到 C 移動 3 層河內塔共需移動 7 次 ``` :::info [河內塔 - 維基百科](https://zh.wikipedia.org/wiki/%E6%B1%89%E8%AF%BA%E5%A1%94) ::: 程式碼 --- ```c= #include <stdio.h> int move(int n) { for (int i = 0; i < n; i++) { printf("%d: ", i); } for (int j = n; j ) } int main() { int n; scanf("%d", &n); printf("%d\n", move(n)); return 0; } ``` 執行 --- ### 輸入 ```! 4 5 6 7 8 9 -1 ``` ### 輸出 ```! 7 20 61 182 547 1640 ``` --- [查看我們在HackMD上的所有筆記](/@CHAWTeam) 目錄:[DICE C語言程式破解](/@CHAWTeam/DiceC) --- {%hackmd Iiu5mOixR7yWkPHKCkabBg %} <iframe class="LikeCoin" height="235" src="https://button.like.co/in/embed/chawteam/button?referrer=https://hackmd.io/@CHAWTeam/DiceC-23-4" width="100%"></iframe> --- {%hackmd i1nMRrZcTFmTvoF897K9zg %}