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

C++ में दो ऐरे से अद्वितीय पेयर्स को अधिकतम करना


समस्या कथन

दो समान आकार N के ऐरे दिए गए हैं, उनके तत्वों का उपयोग करके अधिकतम संख्या में पेयर्स बनाएं, एक पहले ऐरे से और दूसरा दूसरे ऐरे से, जैसे कि प्रत्येक ऐरे से एक तत्व अधिकतम एक बार उपयोग किया जाता है और चुने गए तत्वों के बीच निरपेक्ष अंतर दिए गए तत्व K से कम या बराबर होता है।

उदाहरण

यदि इनपुट है:

arr1[] = {3, 4, 5, 2, 1}

arr2[] = {6, 5, 4, 7, 15}

और k = 3 तो हम निम्न 4 पेयर्स बना सकते हैं जिनका निरपेक्ष अंतर 3 से कम या बराबर है:

(1, 4), (2, 5), (3, 6), (4, 7)

एल्गोरिदम

हम इस समस्या को हल करने के लिए पुनरावर्ती दृष्टिकोण का उपयोग कर सकते हैं:

  • दोनों ऐरे को सॉर्ट करें।
  • पहले ऐरे के प्रत्येक तत्व की तुलना दूसरे ऐरे के प्रत्येक तत्व से संभावित पेयर के लिए करें, यदि पेयर बनाना संभव है।
  • पहले ऐरे के अगले तत्व के लिए अगले संभावित पेयर की जांच जारी रखें।

उदाहरण

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

int getMaxUniquePairs(int* arr1, int* arr2, int n, int k) {
    sort(arr1, arr1 + n);
    sort(arr2, arr2 + n);
    bool visited[n];
    memset(visited, false, sizeof(visited));
    int pairCnt = 0;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            if (abs(arr1[i] - arr2[j]) <= k && visited[j] == false) {
                ++pairCnt;
                visited[j] = true;
                break;
            }
        }
    }
    return pairCnt;
}

int main() {
    int arr1[] = {3, 4, 5, 2, 1};
    int arr2[] = {6, 5, 4, 7, 15};
    int n = sizeof(arr1) / sizeof(arr1[0]);
    int k = 3;
    cout << "Maximum unique pairs = " << getMaxUniquePairs(arr1, arr2, n, k) << endl;
    return 0;
}

आउटपुट

Maximum unique pairs = 4
  1. - C++ में दो दिए गए ऐरे से क्रम बनाए रखते हुए अधिकतम ऐरे बनाना

    समस्या कथन दो समान आकार के ऐरे A[] और B[] दिए गए हैं। कार्य समान आकार का तीसरा ऐरे बनाना है। परिणाम ऐरे में दोनों ऐरे से अधिकतम n तत्व होने चाहिए। इसमें A[] के चुने हुए तत्व पहले होने चाहिए, फिर B[] के चुने हुए तत्व उसी क्रम में जैसे वे मूल ऐरे में दिखाई देते हैं। यदि सामान्य तत्व हैं, तो res[] में

  1. - C++ में दो सॉर्टेड ऐरे से निकटतम पेयर ढूंढना

    मान लें हमारे पास दो सॉर्टेड ऐरे और एक संख्या x है, हमें वह पेयर ढूंढना है जिसका योग x के निकटतम हो। और पेयर में प्रत्येक ऐरे से एक तत्व हो। हमारे पास दो ऐरे A1[0..m-1] और A2[0..n-1] हैं, और एक अन्य मान x है। हमें पेयर A1[i] + A2[j] ढूंढना है जैसे कि (A1[i] + A2[j] - x) का निरपेक्ष मान न्यूनतम हो।

  1. - C++ में दो सॉर्ट की गई सरणियों को मर्ज करना

    समस्या कथन दो सॉर्ट की गई सरणियाँ दी गई हैं। दी गई दो सॉर्ट की गई सरणियों को एक में मर्ज करने के लिए एक फ़ंक्शन लिखें। Arr1[] = {10, 15, 17, 20} Arr2[] = {5, 9, 13, 19} Result[] = {5, 9, 10, 13, 15, 17, 19, 20} एल्गोरिदम 1. दोनों सरणियों को पार करें 1.1. यदि arr1[i] < arr2[j] 1.1.1. arr[