Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ขนาดสูงสุดของเซิร์บอาร์เรย์ที่ตรงตามเงื่อนไขใน C++

ปัญหา

ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อหาขนาดสูงสุดของเซิร์บอาร์เรย์ที่ตรงตามเงื่อนไขที่กำหนด

สำหรับนี้ เราจะได้รับอาร์เรย์ของจำนวนเต็ม งานของเราคือหาความยาวเซิร์บเซ็ตสูงสุดของอาร์เรย์นั้นที่ตรงตามเงื่อนไข arr[k] > arr[k+1] เมื่อ k เป็นคี่ และ arr[k] < arr[k+1] เมื่อ k เป็นคู่ หรือ arr[k] > arr[k+1] เมื่อ k เป็นคู่ และ arr[k] < arr[k+1] เมื่อ k เป็นคี่

ตัวอย่างโค้ด

#include<bits/stdc++.h> 
using namespace std; 

//comparing values of a and b 
int cmp(int a, int b) { 
    return (a > b) - (a < b); 
} 

//returning longest substring 
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