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

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}, {4, 4}, {6, 2}, {2, 4}

एल्गोरिदम

सभी संभावित जोड़ों पर पुनरावृति करें और प्रत्येक जोड़े के लिए जांचें कि (ai + aj - K) का मान हमारे वर्तमान सबसे छोटे मान से कम है या नहीं। उपरोक्त स्थिति के परिणाम के अनुसार हमारे पास कुल तीन मामले हैं -

  • abs(ai + aj - K) > smallest - कुछ न करें क्योंकि यह जोड़ा न्यूनतम संभव मान में नहीं गिना जाएगा।
  • abs(ai + aj - K) = smallest - न्यूनतम संभव मान वाले जोड़े की गिनती बढ़ाएं।
  • abs(ai + aj - K) < smallest - सबसे छोटे मान को अपडेट करें और गिनती को 1 पर सेट करें।

उदाहरण

#include <iostream> 
#include <climits> 
#include <cmath> 
using namespace std; 

void getPairs(int *arr, int n, int k) { 
    int minValue = INT_MAX; 
    int pairs = 0; 
    for (int i = 0; i < n; ++i) { 
        for (int j = i + 1; j < n; ++j) { 
            int val = abs(arr[i] + arr[j] - k); 
            if (val < minValue) { 
                minValue = val; 
                pairs = 1; 
            } else if (val == minValue) { 
                ++pairs; 
            } 
        } 
    } 
    cout << "Min value = " << minValue << endl; 
    cout << "Total pairs = " << pairs << endl; 
} 

int main() { 
    int arr[] = {0, 4, 6, 2, 4}; 
    int k = 7; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    getPairs(arr, n, k); 
    return 0; 
}

आउटपुट

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

Min value = 1 
Total pairs = 5

  1. - C++ प्रोग्राम: सरणी में प्रत्येक तत्व के लिए निकटतम बड़ा मान ज्ञात करना

    यहां हम देखेंगे कि सरणी में प्रत्येक तत्व के लिए निकटतम मान कैसे ज्ञात करें। यदि किसी तत्व x का अगला तत्व जो उससे बड़ा है, और सरणी में भी मौजूद है, तो वह उस तत्व का बड़ा मान होगा। यदि तत्व मौजूद नहीं है, तो -1 लौटाएं। मान लें सरणी तत्व [10, 5, 11, 6, 20, 12] हैं, तो बड़े तत्व [11, 6, 12, 10, -1, 20]

  1. - C++ प्रोग्राम: सरणी में प्रत्येक तत्व के लिए निकटतम बड़ा मान ज्ञात करना

    यहां हम देखेंगे कि सरणी में प्रत्येक तत्व के लिए निकटतम बड़ा मान कैसे ज्ञात करें। यदि किसी तत्व x का अगला तत्व जो उससे बड़ा है, और सरणी में भी मौजूद है, तो वह उस तत्व का बड़ा मान होगा। यदि तत्व मौजूद नहीं है, तो -1 लौटाएं। मान लें सरणी तत्व [10, 5, 11, 6, 20, 12] हैं, तो बड़े तत्व [11, 6, 12, 10, -1

  1. - C++ में सभी संभावित सब-एरेज में न्यूनतम LCM और GCD

    मान लीजिए हमारे पास आकार N की एक सरणी arr है। इसमें N धनात्मक संख्याएं हैं। हमें सभी संभावित सबएरेज के न्यूनतम एलिमेंट्स ढूंढने हैं। मान लीजिए सरणी {2, 66, 14, 521} है, तो न्यूनतम LCM 2 है, और GCD 1 है। हम इस समस्या को लालची दृष्टिकोण का उपयोग करके हल करेंगे। यदि हम एलिमेंट्स की संख्या घटाते हैं, तो