mirror of
https://hub.njuu.cf/TheAlgorithms/C-Plus-Plus.git
synced 2023-10-11 13:05:55 +08:00
Tower of Hanoi
This commit is contained in:
parent
dd750e621b
commit
5108393979
94
Tower of Hanoi.cpp
Normal file
94
Tower of Hanoi.cpp
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
#include<iostream>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
struct tower
|
||||||
|
{
|
||||||
|
int values[10];
|
||||||
|
int top;
|
||||||
|
}F, U, T;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void show()
|
||||||
|
{
|
||||||
|
cout<<"\n\n\tF : ";
|
||||||
|
for(int i=0; i<F.top; i++)
|
||||||
|
{
|
||||||
|
cout<<F.values[i]<<"\t";
|
||||||
|
}
|
||||||
|
cout<<"\n\tU : ";
|
||||||
|
for(int i=0; i<U.top; i++)
|
||||||
|
{
|
||||||
|
cout<<U.values[i]<<"\t";
|
||||||
|
}
|
||||||
|
cout<<"\n\tT : ";
|
||||||
|
for(int i=0; i<T.top; i++)
|
||||||
|
{
|
||||||
|
cout<<T.values[i]<<"\t";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void mov(tower &From, tower &To)
|
||||||
|
{
|
||||||
|
--From.top;
|
||||||
|
To.values[To.top]=From.values[From.top];
|
||||||
|
++To.top;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TH(int n, tower &From, tower &Using, tower &To)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (n==1)
|
||||||
|
{
|
||||||
|
mov(From, To);
|
||||||
|
show();
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TH(n-1, From, To, Using);
|
||||||
|
mov(From, To);
|
||||||
|
show();
|
||||||
|
TH(n-1, Using, From, To);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
F.top=0;
|
||||||
|
U.top=0;
|
||||||
|
T.top=0;
|
||||||
|
|
||||||
|
int no;
|
||||||
|
|
||||||
|
cout << "Enter number of discs : " ;
|
||||||
|
cin >> no;
|
||||||
|
|
||||||
|
for (int i = no; i >0; i--)
|
||||||
|
{
|
||||||
|
F.values[F.top++]=i;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = (F.top)-1; i >=0; i--)
|
||||||
|
{
|
||||||
|
cout<<F.values[i]<<"\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
show();
|
||||||
|
TH(no, F, U, T);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = (T.top)-1; i >=0; i--)
|
||||||
|
{
|
||||||
|
cout<<"\n"<<T.values[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user