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

c++ में दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजें

मान लीजिए कि हमारे पास दो क्रमबद्ध सरणियाँ हैं और एक संख्या x है, हमें उस युग्म को खोजना है जिसका योग x के निकटतम है। और जोड़ी में प्रत्येक सरणी से एक तत्व होता है। हमारे पास दो सरणियाँ हैं A1 [0..m-1] और A2 [0..n-1], और दूसरा मान x। हमें युग्म A1[i] + A2[j] इस प्रकार ज्ञात करना है कि (A1[i] + A2[j] - x) का निरपेक्ष मान न्यूनतम हो। तो अगर A1 =[1, 4, 5, 7], और A2 =[10, 20, 30, 40], और x =32, तो आउटपुट 1 और 30 होगा।

हम A1 के बाएं से और A2 से दाएं से शुरू करेंगे, फिर ऐसी जोड़ी को खोजने के लिए इन चरणों का पालन करें

  • initialize diff, इससे युग्म और x के बीच का अंतर बना रहेगा
  • दो पॉइंटर को इनिशियलाइज़ करें बाएँ:=0 और दाएँ:=n – 1
  • बाएं <=मीटर और दाएं>=0, करते समय
    • अगर |A1[बाएं] + A2 [दाएं] - योग|
    • अद्यतन अंतर और परिणाम
  • अगर (A1[बाएं] + A2 [दाएं]) <योग, तो
    • बाएं 1 से बढ़ाएं
  • अन्यथा
    • दाएं 1 से घटाएं
  • परिणाम प्रदर्शित करें
  • उदाहरण

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    void findClosestPair(int A1[], int A2[], int m, int n, int x) {
       int diff = INT_MAX;
       int left_res, right_res;
    
       int left = 0, right = n-1;
       while (left<m && right>=0) {
          if (abs(A1[left] + A2[right] - x) < diff) {
             left_res = left;
             right_res = right;
             diff = abs(A1[left] + A2[right] - x);
          }
    
          if (A1[left] + A2[right] > x)
          right--;
          else
          left++;
       }
    
       cout << "The closest pair is [" << A1[left_res] << ", "<< A2[right_res] << "]";
    }
    
    int main() {
       int ar1[] = {1, 4, 5, 7};
       int ar2[] = {10, 20, 30, 40};
    
       int m = sizeof(ar1)/sizeof(ar1[0]);
       int n = sizeof(ar2)/sizeof(ar2[0]);
    
       int x = 32;
       findClosestPair(ar1, ar2, m, n, x);
    }

    आउटपुट

    The closest pair is [1, 30]

    1. - तत्वों की एक जोड़ी खोजें जो C++ में समान दो सरणियों का योग बनाता है

      विचार करें कि हमारे पास विभिन्न तत्वों के साथ दो सरणियाँ हैं। हमें तत्वों की एक जोड़ी (x, y) ढूंढनी है, जहां x पहली सरणी में मौजूद है, और y दूसरी सरणी में मौजूद है। जोड़ी को इस तरह चुना जाएगा कि इन दो सरणियों के बीच तत्वों की अदला-बदली के बाद, इन दो सरणियों का योग समान होगा। मान लीजिए कि पहली एरे ए

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

      दो क्रमबद्ध सरणी से निकटतम जोड़ी खोजने के लिए, जावा कोड इस प्रकार है - उदाहरण public class Demo {    void closest_pair(int my_arr_1[], int my_arr_2[], int arr_1_len, int arr_2_len, int sum){       int diff = Integer.MAX_VALUE;       int result_l = 0, result_r

    1. दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजने के लिए पायथन कार्यक्रम दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजने के लिए पायथन कार्यक्रम

      इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें दो सरणियाँ दी गई हैं, हमें दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजने की आवश्यकता है आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # sys module import sys # pair def print_(ar1, ar2, m, n, x):