やっとまた週末が来て、とても嬉しいです!作成を開始してください。
最近またファンの増加が加速し始めているので、もう少しこの勢いが続くといいですね:)
さて、さっそく今日の記事を始めましょう。
#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 個のプレートを補助から に移動します。