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

C++ প্রোগ্রাম: প্রোগ্রামারের সেট থেকে গোষ্ঠী গঠনের সংখ্যা

মান লিখুন: আমাদের কাছে n উপাদান বিশিষ্ট একটি অ্যারে A রয়েছে। A[i] নির্দেশ করে i-তম শিক্ষার্থীর প্রোগ্রামিং দক্ষতা। A-র সব উপাদান আলাদা। আমরা তাদের টিমে ভাগ করতে চাই যাতে:

  • কোনো দুজন শিক্ষার্থী i এবং j যাদের |A[i] - A[j]| = 1, তারা একই টিমে থাকবে না
  • টিমের সংখ্যা ন্যূনতম হবে

উদাহরণ

যদি ইনপুট হয় A = [2, 3, 4, 99, 100], তবে আউটপুট হবে 2, কারণ গোষ্ঠীগুলো হবে [2, 3, 4] এবং [99, 100]

সমাধানের ধাপসমূহ

dem := 1
A সর্ট করুন
for i := 1 থেকে A.size()-1:
    যদি A[i] - A[i-1] == 1:
        dem := 2
dem রিটার্ন করুন

C++ বাস্তবায়ন

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

int solve(vector<int> A) {
    int dem = 1;
    sort(A.begin(), A.end());
    for (int i = 1; i < A.size(); i++)
        if (A[i] - A[i - 1] == 1)
            dem = 2;
    return dem;
}

int main() {
    vector<int> A = { 2, 3, 4, 99, 100 };
    cout << solve(A) << endl;
}

ইনপুট

{ 2, 3, 4, 99, 100 }

আউটপুট

2
  1. C++-এ চেসবোর্ডে (Chessboard) মোট কতগুলো বর্গ (Square) আছে তা বের করার প্রোগ্রাম

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

  3. C++-এ একটি দিয়ে দেয়া সংখ্যার অঙ্ক ব্যবহার করে সর্বোচ্চ সংখ্যা নির্ণয়

  4. C++-এ ৩টি অ্যাটম (Atoms) তাদের ভ্যালেন্স নাম্বার (Valence Numbers) দিয়ে মলিকিউল (Molecule) বানানো সম্ভব কিনা চেক করা