
设
思路:先把个小的圆盘移动到另一个桩上(需要次),再移动最大的圆盘(需要次),最后将个小圆盘移到最大圆盘上(需要次)。
关键词: 数学归纳法(mathematical induction)
C++实现汉诺塔移动步骤显示
#include <iostream>
using namespace std;
int g_cnt = 0;
void Move(char src, char dst)
{
cout << src << "->" << dst << endl;
++g_cnt;
}
void Hanoi(int n, char src, char tmp, char dst)
{
if (n == 1)
{
Move(src, dst);
return;
}
Hanoi(n-1, src, dst, tmp);
Move(src, dst);
Hanoi(n-1, tmp, src, dst);
}
int main()
{
int n;
cin >> n;
Hanoi(n, 'A', 'B', 'C');
cout << g_cnt;
return 0;
}




近期评论