हमें पूर्णांकों की एक सरणी 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