// 把n个盘子从1(a)号柱子借助2(b)号柱子移到3(c)号柱子
// 总共要移 2^n-1 次
#include <iostream>
using namespace std;
void Move(int &x, int &y) // 没有真正移动盘子,只是输出方案
{
cout << x << " --> " << y << endl;
}
void Hanoi(int n, int a, int b, int c)
{
if(n > 0) {
Hanoi(n - 1, a, c, b);
Move(a, c);
Hanoi(n - 1, b, a, c);
}
}
int main(void)
{
int num;
cout << "How many diskes?" << endl;
cin >> num;
Hanoi(num, 1, 2, 3);
return 0;
}
看到维基百科上的介绍,页面上出现了个谢尔宾斯基三角形,有待深究。