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

अधिकतम ट्रेनें जिनके लिए C++ में ठहराव प्रदान किया जा सकता है

इस समस्या में, हमें एक नंबर N दिया जाता है, जो एक स्टेशन पर दो-दो ट्रैक वाले प्लेटफॉर्म की संख्या को दर्शाता है। और जिस स्टेशन के आने और जाने का समय दिया गया है उस स्टेशन से T ट्रेनें गुजरेंगी। प्रत्येक ट्रेन एक विशिष्ट स्टेशन पर रुकती है। हमारा काम अधिकतम ट्रेनों को खोजने के लिए एक प्रोग्राम बनाना है जिसके लिए C++ में स्टॉपेज प्रदान किया जा सकता है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

N = 3, T = 5
Trains = {{0915, 0930, 2}, {0930, 0945, 1}, {0930, 1200, 1}, {0910, 0925, 3}, {0940, 1015, 1}}

आउटपुट

4

स्पष्टीकरण

The train schedules are,
Train 1: Train will be stopped at platform 2 - 09:15-09:30
Train 2: Train will be stopped at platform 1 - 09:30-09:45
Train 3: Train will be not be stopped
Train 4: Train will be stopped at platform 3 - 09:10-09:25
Train 5: Train will be stopped at platform 1 - 09:40-10:15

समाधान दृष्टिकोण

समस्या के समाधान के लिए लालची दृष्टिकोण अपनाने की आवश्यकता है क्योंकि हमें स्टेशन पर रोकी जा सकने वाली ट्रेनों की अधिकतम संख्या खोजने की आवश्यकता है।

समस्या का सबसे इष्टतम समाधान खोजने के लिए हम गतिविधि चयन दृष्टिकोण का उपयोग करेंगे। इसलिए, प्रत्येक प्लेटफॉर्म के लिए, हम ट्रेन की जानकारी संग्रहीत करने के लिए एक वेक्टर बनाएंगे। और फिर सबसे इष्टतम समाधान खोजें।

उदाहरण

हमारी समस्या की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,

#include <bits/stdc++.h>
using namespace std;
int maxStop(int trains[][3], int N, int T) {
   vector<pair<int, int> > tStopping[N + 1];
   int trainsStopped = 0;
   for (int i = 0; i < T; i++)
      tStopping[trains[i][2]].push_back( make_pair(trains[i][1], trains[i][0]));
      for (int i = 0; i <= N; i++)
         sort(tStopping[i].begin(), tStopping[i].end());
            for (int i = 0; i <= N; i++) {
               if (tStopping[i].size() == 0)
                  continue;
                  int a = 0;
                  trainsStopped++;
                  for (int j = 1; j < tStopping[i].size(); j++) {
                     if (tStopping[i][j].second >= tStopping[i][a].first) {
                        a = j;
                        trainsStopped++;
                     }
                  }
            }
            return trainsStopped;
}
int main(){
   int N = 3;
   int T = 5;
   int trains[T][3] = {{915, 930, 2}, {930, 945, 3}, {930, 1200, 1}, {910, 925, 3}, {940, 1015, 1}};
   cout<<"The Maximum No. of Trains Stopped at the station is "<<maxStop(trains, N, T);
   return 0;
}

आउटपुट

The Maximum No. of Trains Stopped at the station is 4

  1. अधिकतम दर्पण जो C++ में प्रकाश को नीचे से दाएं स्थानांतरित कर सकते हैं

    हमें एक वर्ग मैट्रिक्स दिया गया है जिसमें केवल 0 और 1 हैं। 0 एक खाली खाली जगह का प्रतिनिधित्व करता है और 1 का मतलब बाधा है। हमें ऐसे कई दर्पण खोजने होंगे, जिनमें अटेम्प्टी सेल इस प्रकार रखे जा सकें कि ये दर्पण नीचे से दाईं ओर प्रकाश स्थानांतरित कर सकें। यह तब संभव है, जब मिरर को इंडेक्स [i,j] पर रखा

  1. घटनाओं की अधिकतम संख्या जिन्हें C++ में भाग लिया जा सकता है

    मान लीजिए कि हमारे पास कई इवेंट हैं जहां इवेंट [i] =[startDayi, endDayi] हैं। यहाँ हर कार्यक्रम मैं startDayi से शुरू होता हूँ और endDayi पर समाप्त होता हूँ। हम किसी भी दिन d जहां d रेंज startTimei और endTimei (दोनों सम्मिलित) में किसी ईवेंट I में भाग ले सकते हैं। हमें यह ध्यान रखना होगा कि हम किसी

  1. क्या मुख्य () को C++ में ओवरलोड किया जा सकता है?

    सी ++ में, हम फ़ंक्शन ओवरलोडिंग का उपयोग कर सकते हैं। अब हमारे मन में यह सवाल आता है कि क्या हम main() फंक्शन को भी ओवरलोड कर सकते हैं? आइए विचार प्राप्त करने के लिए एक कार्यक्रम देखें। उदाहरण #include <iostream> using namespace std; int main(int x) {    cout << "Value of