हमें पूर्णांकों का एक ऐरे Arr[] दिया गया है। लक्ष्य Arr[] का सबसे लंबा सबएरे ढूंढना है जिसके तत्वों का योग सम हो। यानी, एक सबएरे के तत्वों का योग सम है और वह सबएरे लंबाई में सबसे लंबा है।
इनपुट - Arr[] = { 2,3,5,2,6,7 }
आउटपुट - अधिकतम लंबाई सबएरे - 4
व्याख्या - अधिकतम लंबाई सबएरे है { 5,2,6,7 }। योग 20 है जो सम है।
इनपुट - Arr[] = { 5,7,7,3,4 }
आउटपुट - अधिकतम लंबाई सबएरे - 4
व्याख्या - अधिकतम लंबाई सबएरे है { 5,7,7,3 }। योग 22 है जो सम है।
प्रयुक्त दृष्टिकोण
पूर्णांक ऐरे Arr[] का उपयोग पूर्णांकों को स्टोर करने के लिए किया जाता है।
वेरिएबल size का उपयोग ऐरे की लंबाई स्टोर करने के लिए किया जाता है।
फंक्शन Length(int arr[]) ऐरे के योग की जांच करता है कि यह सम है या नहीं। Leng का उपयोग सबएरे की लंबाई स्टोर करने के लिए किया जाता है।
पूरे ऐरे का योग निकालें, यदि सम है तो ऐरे की लंबाई n वापस करें।
अब पहले तत्व से शुरू करके, पूरे ऐरे को ट्रैवर्स करें, यदि एक विषम तत्व मिलता है तो arr[i] को छोड़कर दोनों हिस्सों की लंबाई ढूंढें।
सबएरे की लंबाई के लिए अधिकतम लंबाई वापस करें।
C++ प्रोग्राम उदाहरण
#include <iostream>
using namespace std;
int Length(int arr[], int n) {
int sum = 0, leng = 0;
// यदि पूरा ऐरे सम है
for (int i = 0; i < n; i++)
sum += arr[i];
if (sum % 2 == 0) // कुल योग पहले से ही सम है
return n;
// एक इंडेक्स i ढूंढें जैसे कि a[i] विषम है
// और दोनों हिस्सों की लंबाई की तुलना करें a[i] को छोड़कर
// अधिकतम लंबाई सबएरे ढूंढने के लिए
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;
cout << "Maximum length of subarray such that sum of the subarray is even: " << Length(Arr, size);
return 0;
}आउटपुट
Maximum length of subarray such that sum of the subarray is even: 5