কম্পিউটার

C++ প্রোগ্রাম একটি সাবয়ারে নেগেট করার পর আমরা পেতে পারি এমন স্বতন্ত্র মানের সংখ্যা খুঁজে বের করতে


ধরুন আমাদের n উপাদান সহ একটি অ্যারে A আছে। আমরা প্রদত্ত সংখ্যার যেকোনো উপসেট নির্বাচন করি এবং এই সংখ্যাগুলিকে অস্বীকার করি। আমরা যে অ্যারে পেতে পারি তাতে আমাদের সর্বাধিক সংখ্যক বিভিন্ন মান খুঁজে বের করতে হবে।

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

পদক্ষেপ

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

Define one set se
n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   x := A[i]
   if x is present in se, then:
      insert -x into se
   Otherwise
      insert x into se
return size of se

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#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++ প্রোগ্রাম

  2. C++ প্রোগ্রামে একটি সংখ্যার জোড় গুণনীয়কের যোগফল বের করতে?

  3. একটি সংখ্যার জোড় গুণনীয়কের যোগফল বের করতে C++ প্রোগ্রাম?

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