टावर ऑफ हनोई एक पहेली समस्या है। जहां हमारे पास तीन स्टैंड और एन डिस्क हैं। प्रारंभ में, डिस्क को पहले स्टैंड में रखा गया है। हमें डिस्क को तीसरे या गंतव्य स्टैंड में रखना है, दूसरे या सहायक स्टैंड को सहायक स्टैंड के रूप में इस्तेमाल किया जा सकता है।
- लेकिन पालन करने के लिए कुछ नियम हैं।
- हम प्रत्येक आंदोलन के लिए केवल एक डिस्क स्थानांतरित कर सकते हैं।
- स्टैंड से केवल सबसे ऊपरी डिस्क को उठाया जा सकता है।
- कोई भी बड़ी डिस्क छोटी डिस्क के शीर्ष पर नहीं रखी जाएगी।
इस समस्या को रिकर्सन द्वारा आसानी से हल किया जा सकता है। सबसे पहले, रिकर्सन का उपयोग करके शीर्ष (एन -1) डिस्क को स्रोत से सहायक स्टैंड पर रखा जाता है, फिर अंतिम डिस्क को स्रोत से गंतव्य तक रखें, फिर फिर से (एन -1) डिस्क को सहायक स्टैंड से गंतव्य स्टैंड पर रिकर्सन रखें।पी>
इनपुट और आउटपुट
इनपुट:डिस्क की संख्या:3आउटपुट:1। डिस्क 1 को A से C2 में ले जाएं। डिस्क 2 को A से B3 में ले जाएं। डिस्क 1 को C से B4 में ले जाएं। डिस्क 3 को A से C5 में ले जाएं। डिस्क 1 को B से A6 में ले जाएं। डिस्क 2 को B से C7 में ले जाएं। डिस्क 1 को A से C में ले जाएं
एल्गोरिदम
toh(n, s, a, d)
इनपुट: डिस्क की संख्या, स्रोत, सहायक, गंतव्य।
आउटपुट: उचित नियम बनाए रखते हुए डिस्क को स्रोत से गंतव्य तक ले जाने के चरण।
शुरू करें अगर n =1 है, तो s से d toh (n-1, s, d, a) मूव डिस्क को s से d toh (n-1, a, s, d)End तक मूव डिस्क प्रदर्शित करें। /पूर्व>उदाहरण
#शामिल करेंनेमस्पेस का उपयोग करना एसटीडी;शून्य TOH(int n, char s, char a, char d) {स्थिर int गिनती =0; // स्टोर संख्या की गिनती अगर (एन ==1) {गिनती ++; cout <<गिनती<<"। डिस्क " < > एन; TOH(n, 'A','B','C');} आउटपुट
डिस्क की संख्या दर्ज करें:31. डिस्क 1 को A से C2 में ले जाएं। डिस्क 2 को A से B3 में ले जाएं। डिस्क 1 को C से B4 में ले जाएं। डिस्क 3 को A से C5 में ले जाएं। डिस्क 1 को B से A6 में ले जाएं। डिस्क 2 को B से C7 में ले जाएं। डिस्क 1 को A से C में ले जाएं