C++によるハノイの塔の実装コード
以下のC++によるハノイの塔問題の実装コードを示します。
#include <iostream>
void hanoi(int n, char source, char auxiliary, char destination) {
if (n == 1) {
std::cout << "Move disk 1 from " << source << " to " << destination << std::endl;
return;
}
hanoi(n - 1, source, destination, auxiliary);
std::cout << "Move disk " << n << " from " << source << " to " << destination << std::endl;
hanoi(n - 1, auxiliary, source, destination);
}
int main() {
int numDisks;
std::cout << "Enter the number of disks: ";
std::cin >> numDisks;
hanoi(numDisks, 'A', 'B', 'C');
return 0;
}
ハノイの塔問題を再帰的に解くために、このコード例ではhanoi関数が使用されています。これは4つの引数を受け取ります: nは移動するディスクの数を表し、sourceはスタート柱、auxiliaryは補助柱、destinationはゴール柱を表します。nが1の場合、つまり移動するディスクが1つのみの場合は、直接ディスクをスタート柱からゴール柱に移動させます。そうでない場合は、n-1個のディスクをスタート柱から補助柱に移動させ、次にn番目のディスクをスタート柱からゴール柱に移動させ、最後にn-1個のディスクを補助柱からゴール柱に移動させます。
main関数では、ユーザーから移動させたい円の枚数の入力を受け、hanoi関数を実行して問題を解きます。