TheAlgorithms-C-Plus-Plus/others/Tower of Hanoi.cpp
Christian Clauss ac1ba3a613
rename Others -> others (#648)
* rename Others -> temp

* rename Others -> others
2019-11-28 13:29:54 +01:00

74 lines
914 B
C++

#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 << "\nEnter number of discs : ";
cin >> no;
for (int i = no; i > 0; i--)
{
F.values[F.top++] = i;
};
show();
TH(no, F, U, T);
return 0;
}