河内塔变型

来源:百度知道 编辑:UC知道 时间:2024/05/21 14:19:21
若将规则改成
柱1与柱3之间的移动必须经过柱2
其他规则跟原本相同
那程式该如何写?
example:
有两个盘,三个柱
1->2
2->3
1->2
3->2
2->1
2->3
1->2
2->3
Code_Beauty大
你可能没看清楚
柱1与柱3之间一定要经过柱2

#include <iostream>
using namespace std;

#define PUTOUT(n,x,z)\
cout << n << " : " << x << " -> " << z << endl;

void hanoi(int n,char x,char y,char z);

int main()
{
char x = 'x',y = 'y',z = 'z';
hanoi(3,x,y,z);
return 0;
}

void hanoi(int n,char x,char y,char z)
{
if(n == 1)
{
PUTOUT(n,x,z);
}
else
{
hanoi(n - 1,x,z,y);
PUTOUT(n,x,z);
hanoi(n - 1,y,x,z);
}
}