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

C++ में क्रोकिंग मेंढकों की न्यूनतम संख्या

मान लीजिए कि हमारे पास croakOfFrogs नामक एक स्ट्रिंग है, यह विभिन्न मेंढकों से "क्रोक" स्ट्रिंग के संयोजन का प्रतिनिधित्व करता है, एक ही समय में कई मेंढक क्रोक कर सकते हैं, इसलिए कई "क्रोक" मिश्रित होते हैं। हमें दी गई स्ट्रिंग में सभी क्रोक को समाप्त करने के लिए विभिन्न मेंढकों की न्यूनतम संख्या ज्ञात करनी होगी।

यहां एक वैध "क्रोक" का अर्थ है कि एक मेंढक क्रमिक रूप से 5 अक्षर 'c', 'r', 'o', 'a', 'k' उत्पन्न कर रहा है। मेंढक को एक क्रोक खत्म करने के लिए सभी पांच अक्षर उत्पन्न करने होते हैं। यदि स्ट्रिंग मान्य "क्रोक" स्ट्रिंग नहीं है तो -1 लौटाएं।

इसलिए, यदि इनपुट "crcoakroak" जैसा है, तो आउटपुट 2 होगा क्योंकि पहला मेंढक "crcoakroak" चिल्ला सकता है। दूसरा मेंढक बाद में "क्रकोक्रोक" चिल्ला सकता है।

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

  • एक नक्शा परिभाषित करें मी

  • आकार की एक सरणी ch परिभाषित करें:5 इसे {'c', 'r', 'o', 'a', 'k'}

    के साथ असाइन करें
  • अस्थायी:=0, सेवानिवृत्त:=0

  • प्रत्येक तत्व के लिए c में s, करें

    • (m[c] 1 से बढ़ाएं)

    • मैक्सवैल:=एम[ch[0]]

    • इनिशियलाइज़ करने के लिए i:=0, जब i <5, अपडेट करें (i से 1 बढ़ाएँ), करें -

      • अगर maxVal

        • वापसी -1

      • मैक्सवैल :=एम[ch[i]]

    • यदि c, 'c' के समान है, तो -

      • (तापमान 1 से बढ़ाएं)

    • अन्यथा जब c 'k' के समान हो, तब -

      • (तापमान को 1 से घटाएं)

    • ret :=अधिकतम रिट और अस्थायी

  • इनिशियलाइज़ i के लिए:=1, जब i <5, अपडेट (i से 1 तक बढ़ाएँ), करें -

    • अगर m[ch[0]], m[ch[i]] के बराबर नहीं है, तो -

      • वापसी -1

  • वापसी रिट

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minNumberOfFrogs(string s) {
      map<char, int> m;
      char ch[5] = { 'c', 'r', 'o', 'a', 'k' };
      int temp = 0;
      int ret = 0;
      for (auto& c : s) {
         m[c]++;
         int maxVal = m[ch[0]];
         for (int i = 0; i < 5; i++) {
            if (maxVal < m[ch[i]] || m[ch[i]] < 0) {
               return -1;
            }
            maxVal = m[ch[i]];
         }
         if (c == 'c') {
            temp++;
         }
         else if (c == 'k') {
            temp--;
         }
         ret = max(ret, temp);
      }
      for (int i = 1; i < 5; i++) {
         if (m[ch[0]] != m[ch[i]])
            return -1;
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.minNumberOfFrogs("crcoakroak"));
}

इनपुट

"crcoakroak"

आउटपुट

2

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. C++ में पृष्ठों की न्यूनतम संख्या आवंटित करें

    पृष्ठों की न्यूनतम संख्या आवंटित करना एक प्रोग्रामिंग समस्या है। आइए इस समस्या पर विस्तार से चर्चा करें और देखें कि इसका समाधान क्या हो सकता है। बयान आपको n विभिन्न पुस्तकों के पृष्ठों की संख्या . दी गई है . साथ ही, मी छात्र . भी हैं जिन्हें किताबें सौंपी जानी हैं। पुस्तकों को पृष्ठों की संख्या के