91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何用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
蓝山县| 崇信县| 蕉岭县| 灌云县| 平湖市| 定远县| 深泽县| 桐梓县| 安吉县| 出国| 开阳县| 南丰县| 镇沅| 仙居县| 巴马| 广宗县| 忻城县| 寻甸| 政和县| 囊谦县| 平安县| 永吉县| 平邑县| 新邵县| 红河县| 锦屏县| 开江县| 自贡市| 巴东县| 太湖县| 新源县| 弥勒县| 陆川县| 全椒县| 若羌县| 比如县| 五原县| 那曲县| 鞍山市| 柘城县| 边坝县|