算法实现汉诺塔问题c++
以下是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)
原文地址: https://www.cveoy.top/t/topic/fdZl 著作权归作者所有。请勿转载和采集!