Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में एक ऐरे को सुंदर बनाने के लिए आवश्यक न्यूनतम संचालन खोजें

इस समस्या में, हमें एक बाइनरी ऐरे बिन [] दिया जाता है जिसमें 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

  1. C++ में को-प्राइम ऐरे बनाने के लिए न्यूनतम इंसर्शन

    इस खंड में हम एक और दिलचस्प समस्या देखेंगे। मान लीजिए कि हमारे पास एन तत्वों की एक सरणी है। इस सरणी को सह-अभाज्य सरणी बनाने के लिए हमें न्यूनतम संख्या में प्रतिच्छेदन बिंदु खोजने होंगे। को-प्राइम एरे में हर दो लगातार एलीमेंट का gcd 1 होता है। हमें ऐरे को भी प्रिंट करना होता है। मान लीजिए हमारे पास

  1. सी ++ में सरणी के सभी तत्वों को समान बनाने के लिए न्यूनतम डिलीट ऑपरेशंस।

    समस्या कथन n तत्वों की एक सरणी को देखते हुए जैसे कि तत्व दोहरा सकते हैं। हम सरणी से किसी भी संख्या में तत्वों को हटा सकते हैं। कार्य इसे समान बनाने के लिए सरणी से हटाए जाने वाले तत्वों की न्यूनतम संख्या को खोजना है। arr[] = {10, 8, 10, 7, 10, -1, -4, 12} सभी सरणी तत्वों को समान बनाने के लिए हमें ह

  1. पायथन का उपयोग करके सरणी को समान बनाने के लिए न्यूनतम संचालन खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n है, n तत्वों के साथ एक सरणी संख्या पर विचार करें, जहां arr[i] =(2*i)+1 सभी i के लिए। अब एक ऑपरेशन में, हम दो इंडेक्स x और y चुन सकते हैं जहां 0 <=x, y