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

C++ में जोड़ी श्रृंखला की अधिकतम लंबाई


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

  • एक सीनेटर के अधिकार पर प्रतिबंध लगाएं - एक सीनेटर दूसरे सीनेटर को इस दौरान और उसके बाद के सभी दौरों के दौरान अपने सभी अधिकार खो सकता है।

  • जीत की घोषणा करें - अगर इस सीनेटर ने पाया कि सीनेटर जिनके पास अभी भी वोट देने का अधिकार है, वे सभी एक समान पार्टी से हैं, तो वह जीत की घोषणा कर सकते हैं और खेल के भीतर बदलाव के बारे में चुनाव कर सकते हैं।

प्रत्येक सीनेटर की पार्टी का प्रतिनिधित्व करने वाली एक स्ट्रिंग को देखते हुए। वर्ण 'आर' और 'डी' क्रमशः रेडियंट पार्टी और डायर पार्टी का प्रतिनिधित्व करते हैं। फिर अगर n सीनेटर हैं, तो दिए गए स्ट्रिंग के आयाम n होंगे।

दिए गए क्रम में प्राथमिक सीनेटर से अंतिम सीनेटर तक राउंड-आधारित प्रक्रिया शुरू होती है। यह प्रक्रिया मतदान के अंत तक चलेगी। प्रक्रिया के दौरान अपने अधिकारों को खोने वाले सभी सीनेटरों को छोड़ दिया जाएगा।

मान लीजिए कि प्रत्येक सीनेटर काफी समझदार है और अपनी पार्टी के लिए सबसे सरल रणनीति खेल सकता है, तो आप भविष्यवाणी करना चाहेंगे कि कौन सी पार्टी अंततः जीत की घोषणा करेगी और Dota2 गेम में बदलाव करेगी। आउटपुट दीप्तिमान या सख्त होना चाहिए।

तो अगर इनपुट "आरडीडी" जैसा है, तो यह सख्त होगा। ऐसा इसलिए है क्योंकि पहला सीनेटर रेडियंट से आता है और वह सिर्फ 1 राउंड में अगले सीनेटर के अधिकार पर प्रतिबंध लगा सकता है। और दूसरा सीनेटर अब किसी भी अधिकार का प्रयोग नहीं कर सकता क्योंकि उसके अधिकार पर प्रतिबंध लगा दिया गया है। उसके बाद तीसरा सीनेटर डायर से आता है और वह राउंड 1 में पहले सीनेटर के अधिकार पर प्रतिबंध लगा सकता है। अब राउंड 2 में, तीसरा सीनेटर सिर्फ जीत की घोषणा कर सकता है क्योंकि सीनेट में केवल वही व्यक्ति है जो वोट दे सकता है।

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

  • एक कतार q1, q2, n :=स्ट्रिंग का आकार बनाएं। सभी R के लिए q1 में, और सभी D के लिए, q2 में डालें।

  • जबकि दोनों कतारें खाली नहीं हैं

    • यदि q1 का अगला तत्व

      • n को q1 में डालें, q2 और q1 से हटाएं

    • अन्यथा n को q2 में डालें, q2 और q1 से हटाएं

    • 1 से n बढ़ाएँ

  • यदि कतार खाली है, तो सख्त वापसी करें, अन्यथा, दीप्तिमान लौटें

उदाहरण(C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string predictPartyVictory(string s) {
      queue <int> q1, q2;
      int n = s.size();
      for(int i = 0; i < s.size(); i++){
         if(s[i] == 'R'){
            q1.push(i);
         } else {
            q2.push(i);
         }
      }
      while(q1.size() && q2.size()){
         if(q1.front() < q2.front()){
            q1.push(n);
            q2.pop();
            q1.pop();
         } else {
            q2.push(n);
            q2.pop();
            q1.pop();
         }
         n++;
      }
      return q1.empty()? "Dire" : "Radiant";
   }
};
main(){
   Solution ob;
   cout <<(ob.predictPartyVictory("RDD"));
}

इनपुट

"RDD"

आउटपुट

Dire

  1. जोड़े की अधिकतम लंबाई श्रृंखला

    जोड़ियों की एक श्रृंखला दी गई है। प्रत्येक जोड़ी में दो पूर्णांक होते हैं और पहला पूर्णांक हमेशा छोटा होता है, और दूसरा बड़ा होता है, वही नियम श्रृंखला निर्माण के लिए भी लागू किया जा सकता है। एक जोड़ी (x, y) को एक जोड़ी (p, q) के बाद जोड़ा जा सकता है, केवल अगर q

  1. सी ++ पथ लंबाई जिसमें अधिकतम संख्या में मोड़ हैं

    एक समस्या को हल करने के लिए जिसमें हमें एक बाइनरी ट्री दिया जाता है। अब हमें उस पथ को खोजने की आवश्यकता है जिसमें अधिकतम संख्या में मोड़ हों। यानी, एक मोड़ तब माना जाता है जब पथ की दिशा बाएं से दाएं या इसके विपरीत बदलती है, उदाहरण के लिए इनपुट - आउटपुट - 6 अब इस दृष्टिकोण में, हम पेड़ से गुजरें

  1. C++ में बाइनरी ट्री में अधिकतम लगातार बढ़ती पथ लंबाई

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें सबसे लंबे पथ की लंबाई की गणना करनी है जिसमें बढ़ते क्रम में लगातार मूल्यों के साथ नोड्स होते हैं। प्रत्येक नोड को लंबाई 1 के पथ के रूप में माना जाएगा। तो, अगर इनपुट पसंद है तो आउटपुट 3 होगा क्योंकि (11, 12, 13) अधिकतम क्रमागत पथ है। इसे हल करने के लिए