C++ ハノイ塔コード (再帰的)

        やっとまた週末が来て、とても嬉しいです!作成を開始してください。

        最近またファンの増加が加速し始めているので、もう少しこの勢いが続くといいですね:)

        さて、さっそく今日の記事を始めましょう。

​#include <iostream>
using namespace std;

void hanoi(int n, char from, char to, char auxiliary) {
    if (n == 1) {
        cout << "Move disc " << n << " from " << from << " to " << to << endl;
    } else {
        hanoi(n - 1, from, auxiliary, to);
        cout << "Move disc " << n << " from " << from << " to " << to << endl;
        hanoi(n - 1, auxiliary, to, from);
    }
}

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

        ここでは再帰アルゴリズムを使用して、ハノイ塔の問題をサブ問題に分割します。 hanoi(n, A, C, B) は、列 B の助けを借りて n 枚のプレートを列 A から列 C に移動することを意味します。

        n が 1 の場合、プレートを から へ から直接移動します。それ以外の場合は、まず n-1 個のプレートを から から補助に移動し、次に n 番目のプレートを から から に移動し、最後に n-1 個のプレートを補助から に移動します。

おすすめ

転載: blog.csdn.net/SYC20110120/article/details/134468937