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;
}

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