इस ट्यूटोरियल में, हम दी गई शर्त को पूरा करने वाले अधिकतम आकार के सब-अरे को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे।
इसके लिए हमें पूर्णांकों की एक सरणी प्रदान की जाएगी। हमारा कार्य उस सरणी के अधिकतम लंबाई वाले सबसेट को ढूंढना है जो निम्न में से किसी एक को संतुष्ट करता हो: जब k विषम हो तो arr[k] > arr[k+1] और जब k सम हो तो arr[k] < arr[k+1], या जब k सम हो तो arr[k] > arr[k+1] और जब k विषम हो तो arr[k] < arr[k+1]।
उदाहरण
#include<bits/stdc++.h>
using namespace std;
// a और b के मानों की तुलना करना
int cmp(int a, int b) {
return (a > b) - (a < b);
}
// सबसे लंबा सबस्ट्रिंग वापस करना
int maxSubarraySize(int arr[], int n) {
int ans = 1;
int anchor = 0;
for (int i = 1; i < n; i++) {
int c = cmp(arr[i - 1], arr[i]);
if (c == 0)
anchor = i;
else if (i == n - 1 || c * cmp(arr[i], arr[i + 1]) != -1) {
ans = max(ans, i - anchor + 1);
anchor = i;
}
}
return ans;
}
int main() {
int arr[] = {9, 4, 2, 10, 7, 8, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
cout << maxSubarraySize(arr, n);
}
आउटपुट
5