hanoi塔问题,做为递归思想的经典问题,充分体现了迭代的是人,递归的是神的思想。
具体问题我就不再阐述了,直接上代码,其实很久以前就写过了,既然按着计算机算法分析coding,就当再练练手了。
//hanoi
//by xcz on 2013.7.1
#include <iostream>
using namespace std;
void hanoi(int n ,char a,char b,char c);
void move(char e , char f);
int main()
{
char a='A',b='B',c='C';
int n;
cout<<"please input the number of dish:"<<endl;
cin>>n;
hanoi(n,a,b,c);
system("pause");
}
//借助柱子c,将n个盘子从a移动到b
void hanoi(int n ,char a,char b,char c)
{
if(n>0)
{
hanoi(n-1,a,c,b); //借助柱子b,将n-1个盘子从柱子a移动到柱子c
move(a,b); //将第n个盘子从柱子a移动到柱子b
hanoi(n-1,c,b,a); //借助柱子c,将n-1个盘子再从柱子c移动到柱子b
}
}
void move(char e , char f)
{
cout<<e<<"-->"<<f<<endl;
}