再帰アルゴリズムのハノータ問題
2736 ワード
ハノタ問題は再帰アルゴリズムの中で最も古典的な問題である.次は私が書いたコードで、私と同じ子供靴に役に立つことを望んでいます.
このうち,私が(1)(2)(3)と表記した3行のコードは再帰アルゴリズムの核心であり,この3行が理解すればハノータ問題は理解に難くない.
#include
using namespace std;
int numer=1;// numer
/*record : */
int record()
{
return numer-1;
}
/*Move : n from to */
void Move(int n,char from,char to)
{
cout<<" "<" :"<<" "<"——>"</*Hanio : , */
void Hanio(int n,char start,char tem,char finish)
{
if(n==1) // , start finish
Move(n,start,finish);
else
{
Hanio(n-1,start,finish,tem); // n n-1 tem
Move(n,start,finish); // n finish
Hanio(n-1,tem,start,finish);// tem n-1 ,start , tem
// , start ,
}
}
int main()
{
int n;
cin>>n;
Hanio(n,'A','B','C');
cout<<" "<" "<return 0;
}
このうち,私が(1)(2)(3)と表記した3行のコードは再帰アルゴリズムの核心であり,この3行が理解すればハノータ問題は理解に難くない.