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

C++ में दो संख्याओं के बीच न्यूनतम दूरी ज्ञात कीजिए

मान लीजिए कि हमारे पास एक क्रमबद्ध सरणी A है, और दो संख्याएँ x और y हैं। हमें A में x और y के बीच की न्यूनतम दूरी ज्ञात करनी है। सरणी में डुप्लिकेट तत्व भी हो सकते हैं। इसलिए यदि सरणी A =[2, 5, 3, 5, 4, 4, 2, 3], x =3 और y =2 है, तो 3 और 2 के बीच की न्यूनतम दूरी सिर्फ 1 है।

इसे हल करने के लिए, हमें इन चरणों का पालन करना होगा,

  • सरणी को बाएं से दाएं पार करें और यदि x या y में से कोई भी मिल जाए तो रुक जाएं। फिर उस स्थिति की अनुक्रमणिका को प्रचलित में संग्रहीत करें
  • अब अनुक्रमणिका प्रचलित के बाद सरणी को पार करें, यदि वर्तमान अनुक्रमणिका वाला तत्व x या y के साथ मेल खाता है, तो जांचें कि क्या यह A [पिछला] से भिन्न है, यदि वह भिन्न है, तो यदि आवश्यक हो तो न्यूनतम अनुक्रमणिका को अद्यतन करें , यदि वे भिन्न हैं, तो पिछला अद्यतन करें जैसा कि पिछला:=i

उदाहरण

#include<iostream>
using namespace std;
int findMinDistance(int A[], int n, int x, int y) {
   int i = 0;
   int distance = INT_MAX;
   int prev_index;
   for (i = 0; i < n; i++) {
      if (A[i] == x || A[i] == y) {
         prev_index = i;
         break;
      }
   }
   while (i < n) {
      if (A[i] == x || A[i] == y) {
         if ( A[prev_index] != A[i] && (i - prev_index) < distance ){
            distance = i - prev_index;
            prev_index = i;
         } else
            prev_index = i;
      }
      i++;
   }
   return distance;
}
int main() {
   int arr[] = {2, 5, 3, 5, 4, 4, 2, 3};
   int n = sizeof(arr) / sizeof(arr[0]);
   int x = 3;
   int y = 2;
   cout << "Minimum distance between " << x << " and " << y << " is: "<< findMinDistance(arr, n, x, y);
}

आउटपुट

Minimum distance between 3 and 2 is: 1

  1. C++ में दो अलग-अलग अच्छे नोड्स के किसी भी जोड़े के बीच सबसे कम दूरी ज्ञात करें

    मान लीजिए कि हमारे पास एन अलग-अलग नोड्स और एम किनारों के साथ एक भारित अप्रत्यक्ष ग्राफ है, कुछ नोड्स अच्छे नोड्स हैं। हमें दो अलग-अलग अच्छे नोड्स के किसी भी जोड़े के बीच सबसे छोटी दूरी का पता लगाना है। दिए गए आरेख में निम्नलिखित ग्राफ में पीले रंग को अच्छा नोड माना जाता है। तो, अगर इनपुट पसंद है

  1. बाइनरी ट्री के दो नोड्स के बीच की दूरी ज्ञात करने के लिए प्रश्न - C++ में O(logn) विधि

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है और हमें Q प्रश्न दिए जाते हैं। हमारा कार्य C++ में बाइनरी ट्री - O(logn) विधि के दोनोड्स के बीच की दूरी का पता लगाने के लिए क्वेरीज़ को हल करने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण प्रत्येक क्वेरी में, हमें बाइनरी ट्री के दो नोड दिए जाते हैं

  1. C++ में एक बाइनरी ट्री के दो नोड्स के बीच की दूरी का पता लगाएं

    मान लें कि हमारे पास कुछ नोड्स के साथ एक बाइनरी ट्री है। हमें दो नोड्स u और v के बीच की दूरी ज्ञात करनी है। मान लीजिए कि पेड़ नीचे जैसा है - अब (4, 6) =4 के बीच की दूरी, पथ की लंबाई 4 है, (5, 8) के बीच की लंबाई =5 आदि। इस समस्या को हल करने के लिए, हम एलसीए (सबसे कम सामान्य पूर्वज) ढूंढेंगे, फिर