Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में अधिकतम सबअरे आकार जैसे कि उस आकार के सभी सबअरे का योग k से कम हो


इस ट्यूटोरियल में, हम अधिकतम सबअरे आकार खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे जैसे कि उस आकार के सभी सबअरे का योग k से कम हो।

इसके लिए हमें आकार N की एक सरणी और एक पूर्णांक k प्रदान किया जाएगा। हमारा कार्य सबअरे की लंबाई ढूंढना है जैसे कि दी गई सरणी में उस लंबाई के सभी सब-अरे का योग k से कम या बराबर हो।

उदाहरण

#include<bits/stdc++.h> 
using namespace std; 
// अधिकतम लंबाई सबअरे ढूंढना 
int bsearch(int prefixsum[], int n, int k) { 
    int ans = -1; 
    // बाइनरी सर्च करना 
    int left = 1, right = n; 
    while (left <= right) { 
        int mid = (left + right) / 2; 
        int i; 
        for (i = mid; i <= n; i++) { 
            if (prefixsum[i] - prefixsum[i - mid] > k) 
                break; 
        } 
        if (i == n + 1) { 
            left = mid + 1; 
            ans = mid; 
        } 
        else right = mid - 1; 
    } 
    return ans; 
} 
// अधिकतम सबअरे आकार वापस करना 
int maxSize(int arr[], int n, int k) { 
    int prefixsum[n + 1]; 
    memset(prefixsum, 0, sizeof(prefixsum)); 
    for (int i = 0; i < n; i++) 
        prefixsum[i + 1] = prefixsum[i] + arr[i]; 
    return bsearch(prefixsum, n, k); 
} 
int main() { 
    int arr[] = {1, 2, 10, 4}; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    int k = 14; 
    cout << maxSize(arr, n, k) << endl; 
    return 0; 
}

आउटपुट

2
  1. - C++ में दिए गए योग से कम या बराबर अधिकतम योग वाली उपसरणी (Maximum sum subarray having sum less than or equal to given sum)

    इस समस्या में, हमें एक सरणी और एक योग दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में दिए गए योग से कम या बराबर योग वाली अधिकतम योग उपसरणी ढूंढे। हमें किसी भी लंबाई की उपसरणी ढूंढनी है जिसका योग दिए गए योग से कम या बराबर हो। आइए एक उदाहरण से समझते हैं: इनपुट - सरणी = {3, 5, 1, 8, 2, 9}, य

  1. - C++ में अधिकतम उपसरणी योग मॉड्यूलो m (Maximum subarray sum modulo m)

    इस समस्या में, हमें आकार n की एक सरणी और एक पूर्णांक m दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में अधिकतम उपसरणी योग मॉड्यूलो m ढूंढे। प्रोग्राम विवरण - यहां, हम उपसरणी के सभी तत्वों के योग को m से विभाजित करके प्राप्त अधिकतम मान ढूंढेंगे। आइए एक उदाहरण से समझते हैं: इनपुट - सरणी = {4

  1. - C++ में निरपेक्ष अंतर 1 से कम या बराबर होने वाले अधिकतम तत्वों की संख्या ज्ञात करें

    मान लीजिए हमारे पास n तत्वों का एक सरणी है। हमें सरणी से चुनने के लिए तत्वों की अधिकतम संख्या ढूंढनी है, जैसे कि चुने गए किन्हीं दो तत्वों के बीच का निरपेक्ष अंतर 1 से कम या बराबर हो। इसलिए यदि सरणी [2, 2, 3, 4, 5] की तरह है, तो तत्व 3 होगा, इसलिए अधिकतम संख्या वाला अनुक्रम 2, 2, 3 है। 0 और 1 का निर