23-5 河內塔

CHAWTeam

目錄:DICE C語言程式破解

題目

河內塔問題(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 次

程式碼

#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上的所有筆記
目錄:DICE C語言程式破解


👉【幫我們一個忙!】👈

👋如果您喜歡這篇文章,請在下方按5個Like!
❤您的支持是我們最大的動力!

您只要登入帳號(Facebook、Google),在下方按5個Like,我們就會收到來自LikeCoin基金會的贊助。
您只需要支持我們,完全不會花到錢!