उस समस्या की चर्चा कीजिए जिसमें हमें एक द्विअंकीय संख्या दी जाती है। हमें इसमें से थोड़ा सा हटाना होगा ताकि शेष संख्या अन्य सभी विकल्पों में से अधिकतम हो, उदाहरण के लिए
Input : N = 1011 Output: 111 Explanation: We need to remove one bit so removing 0 bit will give a maximum number than removing any 1’s bit. 111 > 101, 011. Input: 111 Output: 11 Explanation: Since all the bits are 1 so we can remove any bit.
समाधान खोजने के लिए दृष्टिकोण
ब्रूट-फोर्स मेथड
पाशविक बल लगाने से अधिकतम परिणामी संख्या प्राप्त होगी, अर्थात, प्रत्येक बिट को एक-एक करके हटाकर, विभिन्न परिणामों की तुलना करके, और अधिकतम परिणाम प्राप्त करके।
लेकिन एक कुशल तरीका है कि यह उपयोग कर सकता है, अर्थात, यदि हम कम से कम अनावश्यक बिट को हटा दें।
कुशल दृष्टिकोण
कुशल दृष्टिकोण परिणामी संख्या पर कम से कम प्रभाव डालेगा।
-
सबसे पहले, दाईं ओर से बिट्स को पार करें।
-
0 खोजें और इसे पहले काउंटर पर हटा दें।
-
अगर 0 नहीं मिलता है, तो कोई बिट हटा दें।
उदाहरण
कुशल दृष्टिकोण के लिए C++ कोड
#include <bits/stdc++.h> using namespace std; int main(){ string str = "1011"; bool flag = false; int n = str.length(); // Initialising new array for char res[n - 1]; int j = 0; // traversing through the binary number from right. for (int i = 0; j < n - 1; i++) { // if 0 is found then skip it. if (str[i] == '0' && flag == false) { flag = true; continue; } else res[j++] = str[i]; } // printing the resulting string. cout << "Maximum number: " << res; return 0; }
आउटपुट
Maximum number: 111
उपरोक्त कोड की व्याख्या
-
एक ध्वज चर का उपयोग किया जाता है ताकि केवल एक 0 हटा दिया जाए।
-
परिणामी संख्या को स्टोर करने के लिए कैरेक्टर ऐरे रेस को इनिशियलाइज़ किया जाता है।
-
लूप n-1 तक चलेगा क्योंकि हमें मूल संख्या से एक कम तत्व स्टोर करने की आवश्यकता है।
निष्कर्ष
इस ट्यूटोरियल में, हमने इसमें से एक बिट को हटाने के बाद अधिकतम संख्या खोजने पर चर्चा की। हमने इस समस्या को हल करने के लिए दो तरीकों पर चर्चा की।
हम उसी के लिए C++ कोड भी लिखते हैं, जिसे हम किसी अन्य भाषा जैसे C, Java, Python, आदि में लिख सकते हैं। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगेगा।