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

उप-सरणी की गणना करें जिसमें सी ++ में एक्स से कम या उसके बराबर तत्व हैं

हमें एक सरणी arr [] दी गई है जिसमें पूर्णांक और एक चर X है। लक्ष्य arr [] के सभी उप-सरणी को गिनना है, जैसे कि प्रत्येक उपसरणी में केवल ऐसे तत्व होते हैं जो X से कम या उसके बराबर होते हैं। उदाहरण के लिए यदि सरणी है [1, 2,3] और X=2 तब उप-सरणी [1], [2] और [1,2]

. होंगी

आइए उदाहरणों से समझते हैं।

इनपुट - गिरफ्तारी [] ={ 4,3,2,1,6}; एक्स=3

आउटपुट - उप-सरणियों की संख्या जिनमें X से कम या उसके बराबर तत्व हैं - 6

स्पष्टीकरण - सुबारे होंगे -

[3], [2], [1], [3,2], [2,1], [3,2,1]

इनपुट - एआर [] ={ 3,6,2,7,1,8,5}; एक्स=5

आउटपुट − उप-सरणी की संख्या जिसमें X से कम या उसके बराबर तत्व हैं − 4

स्पष्टीकरण - सुबारे होंगे -

[3], [2], [1], [5]

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

हम मूल सरणी गिरफ्तारी [] के समान आकार का एक बाइनरी सरणी temp_arr [] बना रहे हैं। इस बाइनरी सरणी में 1 होगा यदि संबंधित एआर [i] एक्स से कम या बराबर है, अन्यथा 0. अब temp_arr [] को पार करें और निरंतर 1 की जांच करें (एआर में एक्स से कम तत्व [])। इस तरह के प्रत्येक सबअरे की लंबाई को अस्थायी रूप से स्टोर करें। लंबाई अस्थायी की एक सरणी के लिए। कुल उप-सरणी अस्थायी * (अस्थायी + 1)/2 होगी। इसे कुल गिनती में जोड़ें और temp_arr[] के अंत तक जारी रखें।

  • सरणी arr[] और वेरिएबल X लें।

  • फ़ंक्शन sub_X(int arr[], int size, int x) सरणी और x लेता है और केवल उन तत्वों के साथ उपसरणियों की गिनती देता है जो x से कम या उसके बराबर हैं।

  • अस्थायी चर अस्थायी और इस तरह के उपसरणियों के अंतिम कुल को गिनती के रूप में लें।

  • गिरफ्तारी [] के समान लंबाई की एक बाइनरी सरणी temp_arr[] लें।

  • हम लूप के लिए i=0 से i

  • प्रत्येक तत्व arr[i]<=x के लिए, temp_arr[i]=1 और 0 सेट करें।

  • ट्रैवर्स temp_arr[] लूप के लिए उपयोग कर रहा है।

  • यदि कोई तत्व temp_arr[i] ==1. फिर वर्तमान इंडेक्स i से temp_arr[temp_2] (temp_2=i+1; temp_2

  • सभी 1 के साथ सबअरे की गिनती होगी temp=temp_2-i.

  • इस सबएरे में सभी 1 हैं, जिसका अर्थ है कि एआर [i] में सभी तत्व <=x हैं। कुल उपसरणियाँ होंगी temp_3=temp*(temp+1)/2.

  • दोनों ट्रैवर्सल के अंत में, गिनती में एआर के भीतर सभी उप-सरणी की कुल संख्या होगी जिनकी संख्या x से कम या उसके बराबर होगी।

उदाहरण

#include <iostream>
using namespace std;
int sub_X(int arr[], int size, int x){
   int count = 0, temp = 0;
   int temp_arr[size];
   for (int i = 0; i < size; i++){
      if (arr[i] <= x){
         temp_arr[i] = 1;
      }
      else{
         temp_arr[i] = 0;
      }
   }
   for (int i = 0; i < size; i++){
      if (temp_arr[i] == 1){
         int temp_2;
         for(temp_2 = i + 1; temp_2 < size; temp_2++){
            if(temp_arr[temp_2] != 1){
               break;
            }
         }
         temp = temp_2 - i;
         int temp_3 = (temp) * (temp + 1)/2;
         count = count + temp_3;
         i = temp_2;
      }
   }
   return count;
}
int main(){
   int arr[] = { 2, 6, 1, 10, 5, 3 };
   int x = 4;
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of sub-arrays which have elements less than or equal to X are: "<<sub_X(arr, size, x);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of sub-arrays which have elements less than or equal to X are: 3

  1. ऐसे तत्वों की अधिकतम संख्या ज्ञात कीजिए जिनका निरपेक्ष अंतर C++ में 1 से कम या बराबर हो

    मान लीजिए कि हमारे पास n तत्वों की एक सरणी है। हमें सरणी से चयन करने के लिए तत्वों की अधिकतम संख्या का पता लगाना है, जैसे कि चुने हुए तत्वों में से किन्हीं दो के बीच पूर्ण अंतर 1 से कम या बराबर है। इसलिए यदि सरणी [2, 2, 3, 4, की तरह है, 5], तो तत्व 3 होगा, इसलिए अधिकतम गिनती वाला क्रम 2, 2, 3 है। 0

  1. C++ में दिए गए नंबर से कम या उसके बराबर सबसे बड़ा स्पेशल प्राइम खोजें

    मान लीजिए कि हमारे पास एक संख्या n है। हमें सबसे बड़ा विशेष अभाज्य ज्ञात करना है जो N से कम या उसके बराबर है। विशेष अभाज्य एक संख्या है, जिसे एक के बाद एक अंक रखकर बनाया जा सकता है, इसलिए सभी परिणामी संख्याएँ अभाज्य होती हैं। यहां हम Sieve Of Eratosthenes का उपयोग करेंगे। हम n संख्या तक चलनी सरणी ब

  1. C++ में n से कम या उसके बराबर सभी भाज्य संख्याएँ ज्ञात कीजिए

    यहां हम देखेंगे कि n से कम या उसके बराबर सभी भाज्य संख्याओं को कैसे मुद्रित किया जाता है, एक संख्या N को भाज्य संख्या कहा जाता है यदि यह एक धनात्मक संख्या का भाज्य है। तो कुछ भाज्य संख्याएं 1, 2, 6, 24, 120 हैं। फैक्टोरियल नंबर प्रिंट करने के लिए, हमें सीधे फैक्टोरियल खोजने की जरूरत नहीं है। I =1 स