代码实现:
#include using namespace std;void move(char a, char c) {cout <" <void hanoi(int n, char a, char b, char c) { //如果只有一个盘子 直接从a移动到c if (n == 1) move(a, c); else { //将n个盘子看成两个部分 1 和 n-1 首先需要借助c柱将n-1和盘子从a移动到b hanoi(n-1, a, c, b); //将剩下的一个盘子直接从a移动到c move(a, c); //将在b柱上的n-1个盘子借助a柱从b移动到c hanoi(n-1, b, a, c); }}int main() { int n; cin >> n; hanoi(n, 'a', 'b', 'c'); return 0;}
时间复杂度: