以下是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
函数用于递归地解决汉诺塔问题。它接受四个参数:n
表示要移动的盘子数量,source
表示源柱子,auxiliary
表示辅助柱子,destination
表示目标柱子。当n
等于1时,即只有一个盘子需要移动时,直接将该盘子从源柱子移动到目标柱子。否则,先将n-1
个盘子从源柱子移动到辅助柱子上,然后将第n
个盘子从源柱子移动到目标柱子上,最后再将n-1
个盘子从辅助柱子移动到目标柱子上。
在main
函数中,用户需要输入要移动的盘子数量,然后调用hanoi
函数来解决问题。