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

C++ में अधिकतम आकार 2 और दी गई वैल्यू द्वारा सीमित योग के साथ न्यूनतम पार्टीशन


समस्या विवरण

सकारात्मक संख्याओं का एक ऐरे arr[] दिया गया है, ऐरे में न्यूनतम संख्या में सेट ढूंढें जो निम्नलिखित गुण को संतुष्ट करते हैं:

  • एक सेट में अधिकतम दो एलिमेंट्स हो सकते हैं। दोनों एलिमेंट्स का सन्निकट होना आवश्यक नहीं है।
  • सेट के एलिमेंट्स का योग दी गई Key से कम या बराबर होना चाहिए। यह माना जा सकता है कि दी गई key सबसे बड़े ऐरे एलिमेंट से अधिक या बराबर है।

उदाहरण

यदि arr[] = {1, 2, 3, 4} और k = 5 तो निम्नलिखित 2 जोड़े बनाए जा सकते हैं -

{1, 4} और {2, 3}

एल्गोरिदम

  • ऐरे को सॉर्ट करें
  • सॉर्ट किए गए ऐरे के दो कोनों से दो पॉइंटर्स शुरू करें। यदि उनका योग दी गई key से कम या बराबर है, तो हम उनका सेट बनाते हैं, अन्यथा हम अंतिम एलिमेंट को अकेले मानते हैं

उदाहरण

#include <iostream> 
#include <algorithm> 
using namespace std; 

int getMinSets(int *arr, int n, int key) { 
    int i, j; 
    sort (arr, arr + n); 
    for (i = 0, j = n - 1; i <= j; ++i) { 
        if (arr[i] + arr[j] <= key) { 
            --j; 
        } 
    } 
    return i; 
} 

int main() { 
    int arr[] = {1, 2, 3, 4}; 
    int key = 5; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    cout << "Minimum set = " << getMinSets(arr, n, key) << endl; 
    return 0; 
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को कंपाइल और एक्जीक्यूट करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है:

Minimum set = 2

  1. - C++ में ऐरे के हर सबसेट के एलिमेंट्स के AND में न्यूनतम मान

    समस्या कथन पूर्णांकों का एक ऐरे दिया गया है, कार्य ऐरे के प्रत्येक सबसेट के सभी एलिमेंट्स का AND ढूंढना और उन सभी में न्यूनतम AND वैल्यू प्रिंट करना है। उदाहरण यदि arr[] = {1, 2, 3, 4, 5} तो (1 & 2) = 0 (1 & 3) = 1 (1 & 4) = 0 (1 & 5) = 1 (2 & 3) = 2 (2 & 4) = 0 (2 & 5) = 0 (3 & 4) = 0 (3 & 5) = 1

  1. - C++ में दिए गए ऐरे और k के लिए |ai + aj - k| का न्यूनतम संभव मान

    समस्या विवरण आपको n इंटीजर का एक ऐरे और एक इंटीजर K दिया गया है। उन कुल अनऑर्डर्ड जोड़े {i, j} की संख्या ढूंढें जैसे कि |ai + aj - k| का निरपेक्ष मान न्यूनतम संभव हो जहां i != j। उदाहरण यदि arr[] = {0, 4, 6, 2, 4} और k = 7 तो हम न्यूनतम मान 1 के साथ निम्नलिखित 5 जोड़े बना सकते हैं: {0, 6}, {4, 2}, {

  1. - C++ में डिवाइड एंड कंकर का उपयोग करके अधिकतम योग सबएरे

    मान लीजिए हमारे पास धनात्मक और ऋणात्मक मानों के साथ डेटा की एक सूची है। हमें सन्निहित सबएरे का योग ढूंढना है जिसका योग सबसे बड़ा है। मान लीजिए सूची में {-2, -5, 6, -2, -3, 1, 5, -6} है, तो अधिकतम सबएरे का योग 7 है। यह {6, -2, -3, 1, 5} का योग है।हम इस समस्या को डिवाइड एंड कंकर विधि का उपयोग करके हल