您的位置:首页 > 其它

用递归解决汉诺塔问题

2015-09-30 14:14 417 查看
/************************************************************************

功能:解决汉诺塔问题
说明:递归算法解
作者:nicehuai
日期:2015/2/2

*************************************************************************/

#include<iostream>
#include<cstdio>

using namespace std;

void hannoi(int n,char A,char B,char C);
void move(int n,char A,char B);

long long count ;

int main()
{
int n;
count = 1;
cin>>n;
hannoi(n,'A','B','C');
return 0;
}

void hannoi(int n,char A,char B,char C)         //递归求汉诺塔问题
{
if(n == 1)
move(1,A,C);
else
{
hannoi(n-1,A,C,B);
move(n,A,C);
hannoi(n-1,B,A,C);
}

}

void move(int n,char A,char B)      //每步移动的提示
{
//printf("move %d from %c to %c\n",n,'A','B');
cout<<"step:"<<count++<<" move "<<n<<" from "<<A<<" to "<<B<<endl;

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