以下是C++实现汉诺塔问题的示例代码:

#include <iostream>
using namespace std;

void hanoi(int n, char from, char to, char mid) {
    if (n == 1) {
        cout << "Move disk 1 from " << from << " to " << to << endl;
    } else {
        hanoi(n - 1, from, mid, to);
        cout << "Move disk " << n << " from " << from << " to " << to << endl;
        hanoi(n - 1, mid, to, from);
    }
}

int main() {
    int n;
    cout << "Enter the number of disks: ";
    cin >> n;
    hanoi(n, 'A', 'C', 'B');
    return 0;
}

该算法使用递归方式实现,当只有一个盘子时,直接将盘子从起点移动到终点;当有多个盘子时,将除最底下一个盘子外的所有盘子从起点移动到中转点,将最底下的盘子从起点移动到终点,再将所有盘子从中转点移动到终点。该算法的时间复杂度为O(2^n)

算法实现汉诺塔问题c++

原文地址: https://www.cveoy.top/t/topic/fdZl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录