কম্পিউটার

C++-এ -1 এবং +1 এর অ্যারেতে 0 যোগফল সহ K আকারের কোনো উপসেট আছে কিনা তা খুঁজুন


এই সমস্যায়, আমাদেরকে একটি অ্যারে দেওয়া হয়েছে যা শুধুমাত্র 1 এবং -1 এবং একটি পূর্ণসংখ্যার মান k নিয়ে গঠিত। আমাদের কাজ হল -1 এবং +1 এর অ্যারেতে 0 যোগ সহ K আকারের কোনো উপসেট আছে কিনা তা খুঁজে বের করা।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট: arr[] ={-1, 1, -1, -1, 1, 1, -1}, k =4

আউটপুট: হ্যাঁ

ব্যাখ্যা:

সাইজ 4, {-1, 1, -1, 1} এর উপসেট। যোগফল =-1 + 1 - 1 + 1 =0

সমাধান পদ্ধতি:

আমাদের চেক করতে হবে যে আকারের k আকারের কোনো উপসেট আছে কিনা যার যোগফল 0 এর সমান। একটি উপসেট হিসাবে আমরা অ্যারের যেকোনো উপাদান বিবেচনা করতে পারি, যোগফল হবে 0, যদি 1 এবং -1 এর সমান সংখ্যা থাকে উপসেট উপসেটের আকার সমান হলেই এটি সম্ভব।

সহজভাবে,

k জোড় হলে, সত্য ফেরত দিন।
k বিজোড় হলে মিথ্যা ফেরত দিন।

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#include <iostream>
using namespace std;

int countOne(int a[], int n) {
   
   int i, count = 0;
   for (i = 0; i < n; i++)
      if (a[i] == 1)
         count++;
   return count;
}

bool isSubSetSumZeroFound(int arr[], int n, int K) {
   
   int totalOne = countOne(arr, n);
   int totalNegOne = n - totalOne;
   return (K % 2 == 0 && totalOne >= K / 2 && totalNegOne >= K / 2);
}

int main() {
   
   int arr[] = { 1, 1, -1, -1, 1, -1, 1, 1, -1 };
   int size = sizeof(arr) / sizeof(arr[0]);
   int K = 4;
   if (isSubSetSumZeroFound(arr, size, K))
      cout<<"Subset of size "<<K<<" with sum of all elements 0 exists.";
   else
      cout<<"No subset found";
   return 0;
}

আউটপুট

Subset of size 4 with sum of all elements 0 exists.

  1. C++ এ একটি অ্যারের সমস্ত স্বতন্ত্র উপসেট (বা পরবর্তী) যোগফল খুঁজুন

  2. C++ প্রোগ্রাম যোগফল এবং গুণফল উভয়ই N এর মতো একই সহ দুটি সংখ্যা খুঁজে বের করতে

  3. C++ এ প্রদত্ত GCD এবং LCM সহ যেকোনো জোড়া খুঁজুন

  4. C এবং C++ এ কি "লং" ডেটা টাইপের কোন প্রয়োজন আছে?