हमें एक सरणी 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