||
/****以下程序是汉诺塔算法的递归算法实现,算法虽然简单,但是能体现出递归算法的精髓,
正所谓"麻雀虽小,五脏俱全"! 很值得编程人员回味 ^_^
****/
#include<iostream>
using namespace std;
void move(int n, char x, char y)
{
cout<<"No."<<n<<": "<<x<<" -> "<<y<<endl;
}
void hanoi(int n, char a, char b, char c)
{
if(n==1)
move(1,a,c);
else{
hanoi(n-1,a,c,b); //可以理解为通过借助c,在b处已经放好n-1个盘
move(n,a,c); //第n号盘从a处移到c
hanoi(n-1,b,a,c); //解决b处n-1个盘,最后放到c处
}
}
int main()
{
cout<<"Please enter the nunber for Hannoi: ";
int num=1; //初始化为1
cin>>num;
hanoi(num,'A','B','C');
cout<<"The process is finished!"<<endl;
return 0;
}
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-21 11:55
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社