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

C++ প্রোগ্রাম: সাবঅ্যারে নেগেট করে পাওয়া যেতে পারে ভিন্ন মানগুলোর সর্বোচ্চ সংখ্যা

মান লিখুন: আমাদের কাছে n উপাদান বিশিষ্ট একটি অ্যারে A রয়েছে। আমরা প্রদত্ত সংখ্যাগুলোর যেকোনো সাবসেট নির্বাচন করি এবং সেগুলো নেগেট করি। আমরা অ্যারেতে পাওয়া যাবে সর্বোচ্চ কতগুলো ভিন্ন মান তা বের করতে হবে।

উদাহরণ

যদি ইনপুট হয় A = [1, 1, 2, 2], তবে আউটপুট হবে 4, কারণ আমরা প্রথম এবং শেষ সংখ্যাগুলো নেগেট করে অ্যারেটিকে [-1, 1, 2, -2] বানাতে পারি যাতে চারটি ভিন্ন মান থাকে।

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

se সেট তৈরি করুন
n := A এর আকার
for i := 0 থেকে n-1 পর্যন্ত:
    x := A[i]
    যদি x se-তে থাকে:
        -x se-তে ইনসার্ট করুন
    অন্যথায়:
        x se-তে ইনসার্ট করুন
se এর আকার রিটার্ন করুন

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

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

int solve(vector<int> A) {
    set<int> se;
    int n = A.size();
    for (int i = 0; i < n; i++) {
        int x = A[i];
        if (se.count(x))
            se.insert(-x);
        else
            se.insert(x);
    }
    return se.size();
}

int main() {
    vector<int> A = { 1, 1, 2, 2 };
    cout << solve(A) << endl;
}

ইনপুট

{ 1, 1, 2, 2 }

আউটপুট

4
  1. C++ প্রোগ্রাম: সংখ্যার প্যারিটি (Parity) দ্রুত বের করা

  2. C++-এ একটি সংখ্যার জোড় ফ্যাক্টরগুলোর যোগফল (Sum of Even Factors)

  3. C++-এ একটি সংখ্যার জোড় ফ্যাক্টরগুলোর যোগফল বের করা (Sum of Even Factors)

  4. রিকার্সন ব্যবহার করে সংখ্যার ফ্যাক্টোরিয়াল বের করার C++ প্রোগ্রাম