C++Practise12:汉诺塔问题

#include <iostream>
#include <math.h>
using namespace std;
void hanio(int,char,char,char);
void move(char,char);

/*汉诺塔问题
1:c做过度,将a上的n-1个移动到b
2:将a最后一个移动到c
3:a做过度,将b上的n-1个移动到c
*/
void main()
{
 int m=0;
 cout<<"请输入‘A’盘上面的金盘数目"<<endl;
 cin>>m;
 hanio(m,'A','B','C');
}

void hanio(int number,char a1,char a2,char a3)
{
 if(number==1)
  move(a1,a3);
 else
 {
  hanio(number-1,a1,a3,a2);//第一步
  move(a1,a3);//第二步
  hanio(number-1,a2,a1,a3);//第三步
 }

}
void move(char first,char second)
{
 cout<<first<<"移动到"<<second<<endl;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章