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):