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

C++-এ দুটি টাইপের আইটেম দিয়ে সাইজ ৩-এর গ্রুপের সর্বোচ্চ সংখ্যা


দেওয়া কাজ হল N সংখ্যক টাইপ A আইটেম এবং M সংখ্যক টাইপ B আইটেম দিয়ে সাইজ ৩-এর সর্বোচ্চ কতগুলো গ্রুপ বানানো যায় তা ক্যালকুলেট করা। প্রতিটি গ্রুপে দুটি টাইপের কমপক্ষে একটি আইটেম থাকতে হবে।

উদাহরণ দিয়ে বোঝা যাক

ইনপুট - N=3, M=5

আউটপুট - ২

ব্যাখ্যা

গ্রুপ ১: টাইপ A-এর ১ আইটেম এবং টাইপ B-এর ২ আইটেম
গ্রুপ ২: টাইপ A-এর ১ আইটেম এবং টাইপ B-এর ২ আইটেম
মোট ব্যবহার: টাইপ A-এর ২ আইটেম এবং টাইপ B-এর ৪ আইটেম

ইনপুট - N=5, M=9

আউটপুট - ৪

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • পরিস্থিতিটি ৪টি কেসে ভাগ করা যায় -

    • কেস ১ - যখন M>=2N, তবে সর্বোচ্চ গ্রুপ = M

    • কেস ২ - যখন N>=2M, তবে সর্বোচ্চ গ্রুপ = N

    • কেস ৩ - যখন (M+N) % 3 == 0, তবে সর্বোচ্চ গ্রুপ = (M+N)/3

    • কেস ৪ - উপরের কোনো কন্ডিশন সত্য না হলে সর্বোচ্চ গ্রুপ = (M+N)/3 + (অবশিষ্ট গ্রুপ যদি থাকে)।

      অবশিষ্ট গ্রুপ আছে কিনা চেক করতে, N=N%3 এবং M=M%3 সেট করুন অবশিষ্ট আইটেম বের করার জন্য এবং নিচের কন্ডিশন চেক করুন -

      If ( N!=0 && M!=0 && (N+M)>=3)

      যদি উপরের কন্ডিশন সত্য হয়, তবে ফাইনাল রেজাল্টে ১ যোগ করুন।

  • MaxGrp() ফাংশনে if কন্ডিশন দিয়ে উপরের কেসগুলো চেক করুন।

  • If( M>=2*N ) সত্য হলে M ফেরত দিন। Else If( N>=2*M ) সত্য হলে N ফেরত দিন।

  • উপরের দুটি কন্ডিশন সত্য না হলে চেক করুন if( (M + N)%3 == 0 )। সত্য হলে (M + N)/3 ফেরত দিন।

  • কোনো কন্ডিশন সত্য না হলে count = (M + N)/3 আরম্ভ করুন। N=N%3 এবং M=M%3 সেট করুন এবং কেস ৪-র কন্ডিশন চেক করুন। সত্য হলে count-এ ১ যোগ করুন এবং ফেরত দিন।

C++ প্রোগ্রাম উদাহরণ

#include<bits/stdc++.h>
using namespace std;

// উপরের ধাপগুলো ইমপ্লিমেন্ট করে
int MaxGrp(int N, int M){
    if (N >= 2 * M)
        return N;
    if (M >= 2 * N)
        return M;
    if ((M + N) % 3 == 0)
        return (M + N)/3;
    int count = (M + N)/3;
    M %= 3;
    N %= 3;
    if (M && N && (M + N) >= 3)
        count++;
    return count;
}

int main(){
    int N = 5, M = 9;
    cout << MaxGrp(N, M);
    return 0;
}

আউটপুট

4
  1. C++ কোড: সর্বাধিক গ্রুপ সংখ্যা বের করা

  2. C++ দিয়ে সর্বোচ্চ বেণ্ড (Bends) Barney পথের দৈর্ঘ্য বের করা

  3. C++-এ দুটি গোষ্ঠী থেকে ৩-ব্যক্তির দল গঠনে সর্বোচ্চ দল সংখ্যা

  4. পাইথনে K-সাইজ গ্রুপে আলাদা টাইপের আইটেম রাখে সর্বোচ্চ গ্রুপ সংখ্যা বের করার প্রোগ্রাম