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

C++ में टिकटों की दी गई सूची से यात्रा कार्यक्रम खोजें


मान लीजिए कि हमारे पास टिकटों की एक सूची है जो प्रस्थान और आगमन हवाई अड्डों के जोड़े द्वारा दर्शायी जाती है जैसे [से, से], हमें यात्रा कार्यक्रम को क्रम में खोजना होगा। सभी टिकट एक व्यक्ति के हैं जो चेन्नई से प्रस्थान करता है। तो, यात्रा कार्यक्रम चेन्नई से शुरू होना चाहिए।

तो अगर इनपुट [["मुंबई", "कोलकाता"], ["चेन्नई", "मुंबई"], ["दिल्ली", "बैंगलोर"], ["कोलकाता", "दिल्ली"]] जैसा है, तो आउटपुट ["चेन्नई", "मुंबई", "कोलकाता", "दिल्ली", "बैंगलोर"] होगा।

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

  • एरे रेट और ग्राफ नामक मानचित्र को परिभाषित करें।

  • विज़िट नामक एक विधि को परिभाषित करें। यह इनपुट के रूप में एयरपोर्ट का नाम लेगा

  • जबकि ग्राफ का आकार [एयरपोर्ट] 0 नहीं है

    • x :=ग्राफ का पहला तत्व [हवाई अड्डा]

    • ग्राफ़ [एयरपोर्ट]

      . से पहला तत्व हटाएं
    • कॉल विज़िट(x)

  • हवाई अड्डे को रिट में डालें

  • अब मुख्य विधि से निम्न कार्य करें -

  • मेरे लिए 0 से लेकर टिकर सरणी के आकार तक

    • यू:=टिकट [i, 0], वी:=टिकट [i, 1], ग्राफ में वी डालें[यू]

  • विज़िट ("चेन्नई") क्योंकि यह पहला हवाई अड्डा है

  • सूची को उलट दें और वापस लौटें

उदाहरण (C++)

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   vector <string> ret;
   map < string, multiset <string> > graph;
   vector<string> findItinerary(vector<vector<string>>& tickets) {
      for(int i = 0; i < tickets.size(); i++){
         string u = tickets[i][0];
         string v = tickets[i][1];
         graph[u].insert(v);
      }
      visit("Chennai");
      reverse(ret.begin(), ret.end());
      return ret;
   }
   void visit(string airport){
      while(graph[airport].size()){
         string x = *(graph[airport].begin());
         graph[airport].erase(graph[airport].begin());
         visit(x);
      }
      ret.push_back(airport);
   }
};
main(){
   Solution ob;
   vector<vector<string>> v = {{"Mumbai", "Kolkata"}, {"Chennai", "Mumbai"}, {"Delhi", "Bangalore"}, {"Kolkata", "Delhi"}};
   print_vector(ob.findItinerary(v));
}

इनपुट

{{"Mumbai", "Kolkata"}, {"Chennai", "Mumbai"}, {"Delhi", "Bangalore"}, {"Kolkata", "Delhi"}}

आउटपुट

[Chennai, Mumbai, Kolkata, Delhi, Bangalore, ]

  1. C++ का प्रयोग करते हुए दिए गए बिंदुओं से संभव चतुर्भुजों की संख्या ज्ञात कीजिए

    एक चतुर्भुज यूक्लिडियन समतल ज्यामिति में चार शीर्षों और चार किनारों वाला एक बहुभुज बनाता है। नाम 4-गॉन आदि। चतुर्भुज के अन्य नामों में शामिल हैं और कभी-कभी उन्हें एक वर्ग, प्रदर्शन शैली आदि के रूप में भी जाना जाता है। इस लेख में, हम दिए गए बिंदुओं से संभव चतुर्भुजों की संख्या का पता लगाने के तरीकों

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

    मान लें कि हमारे पास कुछ नोड्स के साथ एक बाइनरी ट्री है। हमें रूट और दूसरे नोड u के बीच की दूरी का पता लगाना है। मान लीजिए पेड़ नीचे जैसा है: अब बीच की दूरी (रूट, 6) =2, पथ की लंबाई 2, के बीच की दूरी (रूट, 8) =3 आदि। इस समस्या को हल करने के लिए, हम बाएँ और दाएँ सबट्री में नोड को खोजने के लिए एक

  1. पायथन में दी गई लिंक की गई सूची से मुड़ी हुई सूची खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक लिंक्ड सूची है। हमें लिंक की गई सूची का पहला आधा भाग लेना है और दूसरी छमाही में गुना करना है और फिर इंटरसेक्टिंग नोड्स को उनकी राशि लेकर मर्ज करना है। अंत में, हमें लिंक की गई सूची के परिणामी शीर्ष को वापस करना होगा। इसलिए, यदि इनपुट [5,8,1,2,4,7,5] जैसा है, तो आउटपुट [2, 5,