इस समस्या में, हमें एक बाइनरी ऐरे बिन [] दिया जाता है जिसमें n बाइनरी मान होते हैं जो 0 और 1 होते हैं। हमारा काम एक ऐरे को सुंदर बनाने के लिए आवश्यक न्यूनतम संचालन खोजना है।
सुंदर सरणी एक विशेष प्रकार की बाइनरी सरणी है जिसमें वैकल्पिक 0 और 1 का पैटर्न होता है।
समस्या का विवरण - हमें सरणी को सुंदर बनाने के लिए आवश्यक संख्या संचालन खोजने की आवश्यकता है। एक ऑपरेशन में ये चरण होते हैं -
चरण 1 - ऐरे को दो हिस्सों में काटें।
चरण 2 - दो हिस्सों में से किसी एक को उलट दें।
चरण 3 - जुड़ें फिर आधा पीछे।
हम यह सुनिश्चित करने के लिए आवश्यक संचालन की संख्या की गणना करेंगे कि सरणी एक सुंदर सरणी बन जाए।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
bin[] = {1, 0, 1, 0, 0, 1}
आउटपुट
1
स्पष्टीकरण
हम ऐरे को काटेंगे, एक सबअरे बिन [4, 5] बनाएंगे, इसे उल्टा करेंगे और इसे वापस जोड़ेंगे।
समाधान दृष्टिकोण
समस्या का समाधान स्विच संचालन की न्यूनतम संख्या खोजने पर आधारित है जो लगातार शून्य की संख्या के बराबर है। आधार मामले हैं -
यदि सरणी का आकार 1 है, तो यह एक सुंदर सरणी है। यदि सरणी का आकार विषम संख्या है तो यह कभी भी एक सुंदर सरणी नहीं हो सकती।
सभी सम लंबाई के लिए, हम लगातार शून्य ऑरोन की कुल संख्या की जांच करेंगे जो कि किए जाने वाले संचालन की संख्या होगी।
एल्गोरिदम
इनिशियलाइज़ करें - जीरोकाउंट, वनकाउंट, कॉन्सजेरो =0
चरण 1 - अगर (एन =1), वापसी 0
चरण 2 - अगर (n%2 !=0), वापसी -1.
चरण 3 - i -> 0 से n-1 के लिए लूप।
चरण 3.1 - अगर बिन[i] ==बिन[i+1] ==0, consZero++.
चरण 4 - अगर बिन [n-1] ==बिन [0] ==0, consZero++।
चरण 5 - कॉन्सजेरो लौटाएं।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <iostream> using namespace std; int minOperations(int bin[], int n) { if(n == 1) return 0; if(n%2 != 0) return -1; int consZero = 0; for (int i = 0; i < n; ++i) { if (i + 1 < n) { if (bin[i] == 0 && bin[i + 1] == 0) consZero++; } } if (bin[0] == bin[n - 1] && bin[0] == 0) consZero++; return consZero; } int main() { int bin[] = { 1, 0, 1, 0, 0, 1}; int n = sizeof(bin) / sizeof(bin[0]); cout<<"The minimum operations needed to make an Array beautiful is "<<minOperations(bin, n); return 0; }
आउटपुट
The minimum operations needed to make an Array beautiful is 1