यह C++ प्रोग्राम बाइनरी वैल्यू का उपयोग करके टॉवर ऑफ़ हनोई समस्या का समाधान प्रदर्शित करता है।
प्रत्येक डिस्क के लिए एक बाइनरी अंक होता है।
सबसे महत्वपूर्ण बिट सबसे बड़ी डिस्क का प्रतिनिधित्व करता है। 0 का मान इंगित करता है कि सबसे बड़ी डिस्क प्रारंभिक खूंटी पर है, जबकि 1 इंगित करता है कि यह अंतिम खूंटी पर है।
बिटस्ट्रिंग को बाएं से दाएं पढ़ा जाता है, और प्रत्येक बिट का उपयोग संबंधित डिस्क के स्थान को निर्धारित करने के लिए किया जा सकता है।
संबंधित डिस्क को पिछली डिस्क के ऊपर उसी पेग पर स्टैक किया जाता है यदि बिट का मान पिछले वाले के समान हो।
अगर यह अलग है तो इसका मतलब है कि संबंधित डिस्क पिछले वाले के बाईं या दाईं ओर एक स्थिति है।
एल्गोरिदम
Begin Take the number of disk n as input. Declare n and a. Make a for loop a = 1 to (1<<n) – 1 // Here, (a & a – 1) = bitwise AND with a and a – 1. (a | a – 1) = bitwise OR with a and a – 1. Here % means modulus operator. // Print the result indicating that moving disks from peg number (a & a – 1) % 3 to peg number ((a | a – 1) + 1) % 3 Endमें स्थानांतरित किया जा रहा है
उदाहरण
#include<iostream> using namespace std; int main() { int n, a; cout<<"\nEnter the no of Disks: "; cin>>n; for (a = 1; a < (1 << n); a++) { cout<<"\nDisk Move from Peg "<<(a&a-1)%3 <<" to Peg "<<((a|a-1)+1)%3; } cout<<"\n"; }
आउटपुट
Enter the no of Disks: 3 Disk Move from Peg 0 to Peg 2 Disk Move from Peg 0 to Peg 1 Disk Move from Peg 2 to Peg 1 Disk Move from Peg 0 to Peg 2 Disk Move from Peg 1 to Peg 0 Disk Move from Peg 1 to Peg 2 Disk Move from Peg 0 to Peg 2