您的位置:首页 > 其它

汉诺塔问题(递归与分治)

2013-03-27 20:06 176 查看
 

#include<iostream>
using namespace std;

//////////////////////////////////
void move(char a,char b,int n)
{
printf("将%d号盘子从%c移动到%c上\n",n,a,b);
}

//////////////////////////////////
void hanoi(int n,char a,char b,char c)
{
if(n <= 0)
return;
hanoi(n-1,a,c,b);
move(a,b,n);
hanoi(n-1,c,b,a);

}

/////////////////////////////////
void main()
{
hanoi(5,'a','b','c');
}
/*
将1号盘子从a移动到b上
将2号盘子从a移动到c上
将1号盘子从b移动到c上
将3号盘子从a移动到b上
将1号盘子从c移动到a上
将2号盘子从c移动到b上
将1号盘子从a移动到b上
将4号盘子从a移动到c上
将1号盘子从b移动到c上
将2号盘子从b移动到a上
将1号盘子从c移动到a上
将3号盘子从b移动到c上
将1号盘子从a移动到b上
将2号盘子从a移动到c上
将1号盘子从b移动到c上
将5号盘子从a移动到b上
将1号盘子从c移动到a上
将2号盘子从c移动到b上
将1号盘子从a移动到b上
将3号盘子从c移动到a上
将1号盘子从b移动到c上
将2号盘子从b移动到a上
将1号盘子从c移动到a上
将4号盘子从c移动到b上
将1号盘子从a移动到b上
将2号盘子从a移动到c上
将1号盘子从b移动到c上
将3号盘子从a移动到b上
将1号盘子从c移动到a上
将2号盘子从c移动到b上
将1号盘子从a移动到b上
*/


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: