mirror of
https://hub.njuu.cf/TheAlgorithms/C-Plus-Plus.git
synced 2023-10-11 13:05:55 +08:00
ac1ba3a613
* rename Others -> temp * rename Others -> others
74 lines
914 B
C++
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;
|
|
}
|