亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何用C++遞歸算法解決漢諾塔問題

c++
小樊
100
2024-09-27 10:40:12
欄目: 編程語言

漢諾塔問題是一個經典的遞歸問題。假設有三個柱子A、B和C,在柱子A上有n個大小不一的圓盤,要求將這些圓盤從柱子A移動到柱子C,且每次只能移動一個圓盤,且在移動過程中不能將較大的圓盤放在較小的圓盤上。可以使用以下C++代碼實現遞歸算法解決漢諾塔問題:

#include <iostream>
using namespace std;

void hanoi(int n, char from, char to, char aux) {
    if (n == 1) {
        cout << "Move disk 1 from " << from << " to " << to << endl;
        return;
    }
    hanoi(n - 1, from, aux, to);
    cout << "Move disk "<< n << " from " << from << " to " << to << endl;
    hanoi(n - 1, aux, to, from);
}

int main() {
    int n;
    cout << "Enter the number of disks: ";
    cin >> n;
    hanoi(n, 'A', 'C', 'B');
    return 0;
}

在這個代碼中,我們定義了一個名為hanoi的函數,它接受四個參數:圓盤數量n,起始柱子from,目標柱子to和輔助柱子aux。當只有一個圓盤需要移動時,直接將其從起始柱子移動到目標柱子。否則,我們將前n-1個圓盤從起始柱子移動到輔助柱子上,然后將第n個圓盤從起始柱子移動到目標柱子上,最后將前n-1個圓盤從輔助柱子移動到目標柱子上。

main函數中,我們首先輸入圓盤的數量,然后調用hanoi函數解決問題。

0
阳新县| 青阳县| 阿瓦提县| 龙川县| 辽源市| 马尔康县| 安宁市| 洛浦县| 叶城县| 谢通门县| 大余县| 南汇区| 景东| 平罗县| 贵南县| 乌鲁木齐县| 文昌市| 福清市| 两当县| 郎溪县| 长武县| 松阳县| 黔南| 全椒县| 特克斯县| 双鸭山市| 井研县| 南乐县| 博白县| 晋中市| 大石桥市| 宕昌县| 广西| 黎城县| 邢台市| 阿鲁科尔沁旗| 仁寿县| 融水| 陇川县| 浦县| 湖州市|