हमें पूर्णांकों की एक सरणी Arr[] दी गई है। लक्ष्य Arr[] की सबसे लंबी लंबाई वाली उप-सरणी खोजना है, जिसके तत्वों का योग सम है। यानी, एक सबअरे के एलीमेंट का योग सम होता है और वह सबएरे लंबाई में सबसे लंबा होता है।
इनपुट - अरे [] ={ 2,3,5,2,6,7 }।
आउटपुट −उपसरणी की अधिकतम लंबाई − 4
स्पष्टीकरण -अधिकतम लंबाई उपसरणी {5,2,6,7} है। योग 20 है जो सम है।
इनपुट - अरे [] ={ 5,7,7,3,4}।
आउटपुट − उपसरणी की अधिकतम लंबाई − 4
स्पष्टीकरण - अधिकतम लंबाई उपसरणी {5,7,7,3} है। योग 22 है जो सम है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक सरणी Arr[] का उपयोग पूर्णांकों को संग्रहीत करने के लिए किया जाता है।
-
सरणी की लंबाई को स्टोर करने के लिए परिवर्तनीय आकार का उपयोग किया जाता है।
-
फ़ंक्शन की लंबाई (int arr []) जाँच है कि सरणियों का योग सम है। Leng का उपयोग सबअरे की लंबाई को स्टोर करने के लिए किया जाता है।
-
सरणी के पूरे योग की गणना करें, यदि सरणी की लंबाई भी वापस आती है, n.
-
अब पहले तत्व से शुरू करते हुए, पूरे सरणी को पार करें, यदि कोई विषम तत्व पाया जाता है, तो arr[i] को छोड़कर दोनों आधे भाग की लंबाई ज्ञात करें।
-
उपसरणी की लंबाई के लिए अधिकतम लंबाई लौटाएं।
उदाहरण
#include<iostream<
int Length(int arr[], int n){
int sum = 0, leng = 0;
// if whole array is even
for (int i = 0; i < n; i++)
sum += arr[i];
if (sum % 2 == 0) // total sum is already even
return n;
// Find an index i such the a[i] is odd
// and compare length of both halfs excluding
// a[i] to find max length subarray
for (int i = 0; i < n; i++) {
if (arr[i] % 2 == 1)
leng = i>n-i-1?i:n-i-1;
}
return leng;
}
int main(){
int Arr[] = { 1, 2, 6, 2, 4,2 };
int size = 6;
printf("Maximum length of subarray such that sum of the subarray is even: %d",Length(Arr, size));
return 0;
} आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Maximum length of subarray such that sum of the subarray is even : 5