/*
*有A、B、C三座塔,其中A塔上有从小到大的编号从1到n依次累加的n个塔,
*要求将A上的n个塔移动到C上,移动中不能把号码大的塔放在号码小的塔上面*
*/
#include <iostream>
using namespace std;
int m =0; //全局变量记录移动次数
int move (char A, int No, char C)
{
cout<<++m<<": "<<"move "<<No<<" from "<<A<<" to "<<C<<";"<<endl; //将No号塔从A移动到C;
return 0;
}
int Hanoi(int n, char A, char B,char C)//将 n个盘子从A街道B移动到C;
{
if(0==n)
{
cout<<"The Number of Plates is "<<n<<endl;
return 0;
}
else if(1==n)
{
move(A,1,C);
return 0;
}
else
{
Hanoi(n-1,A,C,B);
move(A,n,C);//将n号塔直接从A移动到C
Hanoi(n-1,B,A,C);
}
}
int main(void)
{
char A, B, C;
A='A';
B='B';
C='C';
Hanoi(4, A, B, C);
cout<<"Main is over!"<<endl;
return 0;
}
*有A、B、C三座塔,其中A塔上有从小到大的编号从1到n依次累加的n个塔,
*要求将A上的n个塔移动到C上,移动中不能把号码大的塔放在号码小的塔上面*
*/
#include <iostream>
using namespace std;
int m =0; //全局变量记录移动次数
int move (char A, int No, char C)
{
cout<<++m<<": "<<"move "<<No<<" from "<<A<<" to "<<C<<";"<<endl; //将No号塔从A移动到C;
return 0;
}
int Hanoi(int n, char A, char B,char C)//将 n个盘子从A街道B移动到C;
{
if(0==n)
{
cout<<"The Number of Plates is "<<n<<endl;
return 0;
}
else if(1==n)
{
move(A,1,C);
return 0;
}
else
{
Hanoi(n-1,A,C,B);
move(A,n,C);//将n号塔直接从A移动到C
Hanoi(n-1,B,A,C);
}
}
int main(void)
{
char A, B, C;
A='A';
B='B';
C='C';
Hanoi(4, A, B, C);
cout<<"Main is over!"<<endl;
return 0;
}