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

C++ में किसी भी शहर और स्टेशन के बीच अधिकतम दूरी ज्ञात कीजिए

अवधारणा

दिए गए शहरों की संख्या के संबंध में एन की संख्या 0 से एन -1 तक और जिन शहरों में स्टेशन स्थित हैं, हमारा काम किसी भी शहर और उसके निकटतम स्टेशन के बीच अधिकतम दूरी निर्धारित करना है। यह ध्यान दिया जाना चाहिए कि स्टेशनों वाले शहरों को किसी भी क्रम में दिया जा सकता है।

इनपुट

numOfCities = 6, stations = [2, 4]

आउटपुट

2

इनपुट

numOfCities = 6, stations = [4]

आउटपुट

4
  • निम्नलिखित आंकड़ा पहले उदाहरण को दर्शाता है जिसमें 6 शहरों और हरे रंग से हाइलाइट किए गए स्टेशनों वाले शहर शामिल हैं। तो, इस मामले में, अपने निकटतम स्टेशनों से सबसे दूर के शहर 2 की दूरी पर 0 हैं। इसलिए अधिकतम दूरी 1 है।

C++ में किसी भी शहर और स्टेशन के बीच अधिकतम दूरी ज्ञात कीजिए

  • दूसरे उदाहरण में, अपने निकटतम स्टेशन से सबसे दूर का शहर 0 है जो 4 की दूरी पर है। इसलिए अधिकतम दूरी 4 है।

C++ में किसी भी शहर और स्टेशन के बीच अधिकतम दूरी ज्ञात कीजिए

विधि

यहाँ, इस समस्या के तीन संभावित मामले हैं -

  • पहला मामला इंगित करता है कि सबसे दूर का शहर दो स्टेशनों के बीच कब है।

  • दूसरा मामला इंगित करता है कि सबसे दूर का शहर पहले स्टेशन के बाईं ओर है।

  • अंतिम मामला इंगित करता है कि सबसे दूर का शहर अंतिम स्टेशन के दाईं ओर कब है।

उपरोक्त समस्या को हल करने के लिए निम्नलिखित एल्गोरिथम लागू किया गया है -

  • हम गलत के साथ आकार एन (शहरों की संख्या) की एक बूलियन सरणी प्रारंभ करते हैं। उसके बाद स्टेशनों वाले शहरों के मूल्यों को सही के रूप में चिह्नित करें

  • इसके बाद हम 0 के साथ एक वेरिएबल डिस्ट को इनिशियलाइज़ करते हैं। हमें वैल्यू के साथ एक और वेरिएबलमैक्सडिस्ट को इनिशियलाइज़ करना होगा जो स्टेशन के साथ पहले शहर के समान है (दूसरे केस के लिए इस्तेमाल किया गया)।

  • सभी शहरों में एक-एक करके लूपिंग शुरू करें।

  • यह देखा गया है कि यदि वर्तमान शहर में एक स्टेशन है, और फिर अधिकतम (dist+1)//2 और maxDist को maxDist (पहले मामले के लिए प्रयुक्त) असाइन करें। इसके अलावा, जिले को 0 असाइन करें।

  • वरना, इंक्रीमेंट डिस्ट.

  • अंत में, अधिकतम डिस्ट और मैक्सडिस्ट (तीसरे मामले के लिए प्रयुक्त) लौटाएं।

उदाहरण

// C++ program to calculate the maximum
// distance between any city
// and its nearest station
#include<bits/stdc++.h>
using namespace std;
// Shows function to compute the maximum
// distance between any city and its nearest station
int findMaxDistance(int numOfCities1,int station1[],int N){
   // Used to initialize boolean list
   bool hasStation[numOfCities1 + 1] = {false};
   // Used to assign True to cities containing station
   for (int city1 = 0; city1 < N; city1++){
      hasStation[station1[city1]] = true;
   }
   int dist1 = 0;
   int maxDist1 = INT_MAX;
   for(int i = 0; i < N; i++){
      maxDist1 = min(station1[i],maxDist1);
   }
   for (int city1 = 0; city1 < numOfCities1; city1++){
      if (hasStation[city1] == true){
         maxDist1 = max((dist1 + 1) / 2, maxDist1);
         dist1 = 0;
   }
   else
      dist1 += 1;
   }
   return max(maxDist1, dist1);
}
//Driver code
int main(){
   int numOfCities1 = 6;
   int station1[] = {2,4};
   int N = sizeof(station1)/sizeof(station1[0]);
   cout << "Max Distance:" << findMaxDistance(numOfCities1,
   station1, N);
}

आउटपुट

Max Distance:2

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

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

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

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

  1. C++ में थ्रेसहोल्ड दूरी पर पड़ोसियों की सबसे छोटी संख्या वाले शहर का पता लगाएं

    मान लीजिए कि n शहरों की संख्या 0 से n-1 तक है। यदि हमारे पास सरणी किनारे हैं जहां किनारों [i] =[fromi, toi, weighti] शहरों से i और toi के बीच एक द्विदिश और भारित किनारे का प्रतिनिधित्व करता है, और पूर्णांक दूरी सीमा दी गई है। हमें ऐसे शहरों की सबसे छोटी संख्या वाला शहर ढूंढना है जो किसी रास्ते से पह