কম্পিউটার টিউটোরিয়াল

C++-এ ন্যূনতম বাঙ ক্রোয়াকিং फ्रগ গণনা


একটি স্ট্রিং croakOfFrogs দেওয়া আছে যা একাধিক বাঙের "croak" মিশে আছে। একসাথে কতটুকু বাঙ ক্রোয়াক করেছে তার ন্যূনতম সংখ্যা বের করতে হবে। "croak" সিকোয়েন্স ঠিকমতো না হলে -1 রিটার্ন করব।

ইনপুট: "crcoakroak" → আউটপুট: 2

সমাধানের ধাপগুলো:

  • ফ্রিকোয়েন্সি ম্যাপ m দিয়ে 'c','r','o','a','k' এর কাউন্ট রাখব

  • প্রতি ক্যারেক্টারের জন্য কাউন্ট আপডেট করব

  • ভ্যালিডিটি চেক: m['c'] >= m['r'] >= m['o'] >= m['a'] >= m['k']

  • এক্টিভ বাঙ temp ট্র্যাক করব: 'c' তে বাড়বে, 'k' তে কমবে

  • ret = max(ret, temp)

  • শেষে সব কাউন্ট সমান কিনা চেক করব

উদাহরণ

নিচের কোডটি দেখুন −

#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, 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;
    }
};

int main() {
    Solution ob;
    cout << (ob.minNumberOfFrogs("crcoakroak"));
}

ইনপুট

"crcoakroak"

আউটপুট

2

  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  3. C++-এ মিনিমাম নাম্বার অফ স্কয়ার-ফ্রি ডিভাইজর

  4. C++-এ ন্যূনতম পৃষ্ঠা বণ্টন (Allocate Minimum Pages)