#include #include #define ARRAYSIZE 100 /************************************************************************************************* PROGRAMMED BY : REHAN AHMED KHAN PAKISTAN- KARACHI BS student in FAST University (foundation for advancement of science and technology) this program is free ware and anyone can use it. /************************************************************************************************/ /************************************************************************************************* * THE ALGORITHM USED IS AS FOLLOWS * * * * Because the tree is complete it can be stored in an array of 2^n-1. * * The root of the tree is in position 2^(n-1)-1 * * for any level j, the first node at that level is in position 2^(n-1-j)-1 * * and each successive node at that level is 2^(n-j) elements beyond the previous element * * at that level * * So the sequential traversal of the array produces the solution of Towers of Hanoi Problem * * * *************************************************************************************************/ class TowersHanoi { private: struct //node structure { char chToPeg; char chFromPeg; int iDiskNo; }node[ARRAYSIZE]; //Array of Nodes char except(char chFromPeg, char chToPeg); //returns peg other than provided as parameter public: TowersHanoi(); //constructor //generates the tree void generateTree(char chFromPeg,char chToPeg, int iDiskNo); }; ////////////////////////////////////////////////////////////////////////////////////////////////// TowersHanoi::TowersHanoi() { int iDiskNo; cout << "\nENTER THE NUMBER OF DISKS >> "; cin >> iDiskNo; generateTree('A','B',iDiskNo); int cMoves=(int)pow(2,iDiskNo)-1; cout << "THE MOVES ARE AS FOLLOWS\n"; for(int i=0;i