c++

c++汉诺塔实现代码怎么写

小亿
120
2023-11-29 18:33:29
栏目: 编程语言

以下是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函数来解决问题。

0
看了该问题的人还看了