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

C++ में दिए गए समय पर कतार की व्यवस्था ज्ञात कीजिए

इस समस्या में, हमें केवल 'M' और 'F' वर्णों और एक समय t से मिलकर बनी एक स्ट्रिंग दी जाती है। हमारा काम है एक निश्चित समय पर कतार की व्यवस्था का पता लगाना

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

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

Input : queue = "MFMMFF" , t = 3
Output : FFMFMM

स्पष्टीकरण -

In T = 0 -> 1, 'M' at position 1 changes position with 'W' at 2 and 'M' at position 4 changes position with 'W' at 5. Queue becomes - "FMMFMF".
In T = 0 -> 1, 'M' at position 3 changes position with 'W' at 4 and 'M' at position 5 changes position with 'W' at 6. Queue becomes - "FMFMFM".
In T = 0 -> 1, 'M' at position 2 changes position with 'W' at 3 and 'M' at position 4 changes position with 'W' at 5. Queue becomes - "FFMFMM".

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

समस्या को हल करने का एक सरल तरीका है कतार T बार का प्रतिनिधित्व करने वाली स्ट्रिंग को पार करना। "एमएफ" जोड़े की घटना का पता लगाएं और एम और एफ की स्थिति को स्वैप करें। और अंत में अंतिम स्ट्रिंग लौटाएं।

उदाहरण

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

#include <iostream>
using namespace std;
string rearrageQueue(int n, int t, string queue) {
   for (int i = 0; i < t; i++)
      for (int j = 0; j < n - 1; j++)
         if (queue[j] == 'M' && queue[j + 1] == 'F') {
            queue[j] = 'F';
            queue[j + 1] = 'M';
            j++;
         }
   return queue;
}
int main() {
   int n = 6, t = 3;
   string queue = "MFMMFF";
   cout<<"The queue after time is over : "<<rearrageQueue(n, t, queue);
   return 0;
}

आउटपुट

The queue after time is over : FFMFMM

  1. मार्कोव श्रृंखला में एक निश्चित समय पर एक राज्य की संभावना खोजने के लिए सी ++ प्रोग्राम

    इस लेख में, हम मार्कोव श्रृंखला में एक निश्चित समय अवधि में प्रारंभिक अवस्था से अंतिम अवस्था तक पहुँचने की संभावना को खोजने के लिए एक कार्यक्रम पर चर्चा करेंगे। मार्कोव श्रृंखला एक यादृच्छिक प्रक्रिया है जिसमें विभिन्न राज्यों और एक राज्य से दूसरे राज्य में जाने की संबंधित संभावनाएं शामिल हैं। एक र

  1. सी ++ प्रोग्राम दिए गए इटरेटर के प्रकार को खोजने के लिए

    एक पुनरावर्तक एक पॉइंटर की तरह एक वस्तु है जिसका उपयोग कंटेनर के तत्वों पर पुनरावृति करने के लिए किया जाता है। एक पुनरावर्तक का उपयोग करने का मुख्य लाभ एक सामान्य इंटरफ़ेस बनाना और एल्गोरिदम को इसे लागू करने के लिए उपयोग किए जाने वाले कंटेनर के प्रकार से प्रतिरक्षा बनाना है। C++ मानक पुस्तकालय में

  1. सी ++ प्रोग्राम किसी दिए गए स्ट्रिंग के क्रमपरिवर्तन की संख्या का पता लगाने के लिए

    हम एक स्ट्रिंग के पात्रों को अलग-अलग क्रम में व्यवस्थित कर सकते हैं। यहां हम देखेंगे कि हम कैसे गिन सकते हैं कि किसी दिए गए स्ट्रिंग से कितने क्रमपरिवर्तन बन सकते हैं। हम जानते हैं कि यदि एक स्ट्रिंग abc है। इसमें तीन वर्ण हैं; हम उन्हें 3 में व्यवस्थित कर सकते हैं! =6 अलग-अलग तरीके। तो n वर्णों वा