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