阅读量:2
以下是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
函数来解决问题。