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

अधिकतम तत्व जिन्हें C++ में a और b की दी गई इकाइयों का उपयोग करके पार किया जा सकता है

बाइनरी ऐरे को देखते हुए गिरफ्तारी[] और दो चर a और b कुछ प्रारंभिक मूल्यों के साथ। सरणी में एक तत्व को पार करने के लिए arr[] दो तरीके हैं -

  • अगर arr[i] ==1, तो a . से 1 इकाई का उपयोग किया जा सकता है , b . में बिना किसी परिवर्तन के . यदि b . से 1 इकाई का उपयोग किया जाता है , तो a 1 इकाई से बढ़ जाता है। (ध्यान दें कि a के मान को उसके मूल मान से ऊपर नहीं बढ़ाया जा सकता है।)

  • अगर arr[i] ==0, तो a . से 1 इकाई का उपयोग किया जा सकता है या b

आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है -

इनपुट

arr[] = {0, 0, 0, 1, 1}, a = 2, b = 2

आउटपुट

5

स्पष्टीकरण

1 सेंट . पार करने के लिए तत्व, a . से 1 इकाई का उपयोग करें (ए =1, बी =2)।

2 nd . को पार करने के लिए तत्व, a . से 1 इकाई का उपयोग करें (ए =0, बी =2)।

3 तीसरे . को पार करने के लिए तत्व, b . से 1 इकाई का उपयोग करें (ए =0, बी =1)।

4 वें . को पार करने के लिए तत्व, b . से 1 इकाई का उपयोग करें जो a . को बढ़ाता है 1 इकाई द्वारा (a =1, b =0)।

5 वें . को पार करने के लिए तत्व, a . से 1 इकाई का उपयोग करें (ए =0, बी =0)।

इसलिए, हमने सभी तत्वों को पार कर लिया और आउटपुट 5 हो गया।

इनपुट

arr[] = {1, 1, 1, 0, 1}, a = 1, b = 2

आउटपुट

4

निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है

  • फ़ंक्शन में MaxElements() वैरिएबल को इनिशियलाइज़ करें Oa =0 और अधिकतम =0, दोनों प्रकार के int क्रमशः a के मूल मान और अंतिम उत्तर को संग्रहीत करने के लिए।

  • सरणी में प्रत्येक तत्व की जांच करने के लिए i =0 से i<आकार तक लूप करें।

  • पहले जांचें कि क्या दोनों a और शून्य के बराबर हैं, फिर लूप से बाहर निकलें।

  • और जांचें कि क्या (ए ==0) और यदि ऐसा है, तो जांचें कि वर्तमान तत्व =1 है और उस तत्व को पार करने के लिए बी से 1 घटाएं और ए =मिनट (ओए, ए + 1) डालें ताकि ए अपने मूल से अधिक न हो मूल्य।

    अन्यथा केवल a को प्रभावित किए बिना b से 1 घटाएं।

  • और जांचें कि क्या (बी ==0) और यदि ऐसा है, तो बस 1 से घटाएं।

  • और जांचें कि क्या (arr[i] ==1 &&a

  • अन्यथा केवल 1 से घटाएं और अधिकतम increment बढ़ाएं ।

  • लूप के बाहर, अधिकतम return लौटाएं ।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int MaxElements(int arr[], int a, int b, int size){
   // Oa will have original value of a
   int Oa = a;
   int max = 0;
   // Iterate in the binary array
   for (int i = 0; i < size; i++){
      // Break loop if a and b, both are = 0
      if (a == 0 && b == 0)
         break;
      // If a is not present, use b
      else if (a == 0){
         //increase a by 1 if arr[i] == 1
         if (arr[i] == 1){
            b -= 1;
            //Checking if original value is not exceeded
            a = min(Oa, a + 1);
         }
         else
            b -= 1;
      }
      // If b is not present, use a
      else if (b == 0)
         a--;
         // if arr[i] == 1,use b
      else if (arr[i] == 1 && a < Oa){
         b -= 1;
         a = min(Oa, a + 1);
      }
      else
         a--;
         max++;
   }
   return max;
}
//main function
int main(){
   int arr[] = { 1, 1, 1, 0, 1 };
   int size = sizeof(arr) / sizeof(arr[0]);
   int a = 1;
   int b = 2;
   cout << MaxElements(arr, a, b, size);
   return 0;
}

आउटपुट

4

  1. अधिकतम संख्या जिसे C++ में N सेगमेंट का उपयोग करके सेवन सेगमेंट डिस्प्ले पर प्रदर्शित किया जा सकता है

    यह देखते हुए कि कार्य सात खंड प्रदर्शन की चींटी संख्या पर N खंड का उपयोग करके प्रदर्शित की जा सकने वाली अधिकतम संख्या ज्ञात करना है। आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है - इनपुट -एन=5 आउटपुट - 71 स्पष्टीकरण − सबसे बड़ी संख्या सात खंडों के प्रदर्शन पर निम्नानुसार प्रदर्शि

  1. C++ में लाइन सेगमेंट की दी गई लंबाई का उपयोग करके अधिकतम समांतर चतुर्भुज बनाए जा सकते हैं

    यह देखते हुए कि यदि प्रत्येक रेखा खंड को एक समांतर चतुर्भुज में अधिक से अधिक उपयोग किया जा सकता है, तो दिए गए N संख्या रेखाखंडों का उपयोग करके बनाए जा सकने वाले समांतर चतुर्भुजों की अधिकतम संख्या ज्ञात करना है। आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है - इनपुट - Arr[] ={8, 3, 1

  1. लिंक की गई सूची का अधिकतम और न्यूनतम तत्व जो C++ . में दी गई संख्या k से विभाज्य है

    एक लिंक्ड सूची एक रैखिक डेटा संरचना है जिसमें तत्व पॉइंटर्स के माध्यम से जुड़े होते हैं। लिंक की गई सूची के प्रत्येक तत्व या नोड में एक डेटा भाग और लिंक होता है, या हम अनुक्रम में अगले तत्व के लिए सूचक कह सकते हैं। तत्व स्मृति में गैर-सन्निहित स्थान ले सकते हैं। हमें एक सिंगल लिंक्ड लिस्ट दी जाती