কম্পিউটার

C++ এ শর্তসাপেক্ষ অপারেটর ব্যবহার না করে অ্যারে থেকে সবচেয়ে বড় উপাদান খুঁজুন


ধরুন আমাদের কিছু উপাদান সহ একটি অ্যারে A আছে। আমাদের অ্যারের সবচেয়ে বড় উপাদান খুঁজে বের করতে হবে, কিন্তু বাধা হল, আমরা কোনো শর্তসাপেক্ষ অপারেটর ব্যবহার করতে পারি না। তাই যদি A =[12, 63, 32, 24, 78, 56, 20] হয়, তাহলে সর্বোচ্চ উপাদান হবে 78।

এই সমস্যা সমাধানের জন্য, আমরা bitwise AND অপারেশন ব্যবহার করব। প্রথমে আমরা অ্যারেতে একটি অতিরিক্ত উপাদান INT_MAX (যেখানে সমস্ত বিট 1) সন্নিবেশ করাব। তারপর আমরা অ্যারে থেকে যেকোনো জোড়ার সর্বোচ্চ এবং মান খুঁজে বের করার চেষ্টা করব। এই প্রাপ্ত সর্বোচ্চ মানটিতে INT_MAX এর AND মান এবং মূল অ্যারের বৃহত্তম উপাদান থাকবে এবং এটি ফলাফল হবে৷

উদাহরণ

#include <iostream>
#include <vector>
using namespace std;
int checkBit(int pattern, vector<int> arr, int n) {
   int count = 0;
   for (int i = 0; i < n; i++)
      if ((pattern & arr[i]) == pattern)
         count++;
   return count;
   }
   int findLargestElement(int arr[], int n) {
      vector<int> elements_vector(arr, arr + n);
      elements_vector.push_back(INT_MAX);
      n++;
      int res = 0;
      for (int bit = 31; bit >= 0; bit--) {
         int count = checkBit(res | (1 << bit), elements_vector, n);
         if ((count | 1) != 1)
               res |= (1 << bit);
      }
      return res;
}
int main() {
   int arr[] = {12, 63, 32, 24, 78, 56, 20};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << "Largest element is: " << findLargestElement(arr, n);
}

আউটপুট

Largest element is: 78

  1. C++ ব্যবহার করে struct অ্যারেতে সর্বাধিক খুঁজুন।

  2. অ্যারেতে এমন একটি উপাদান খুঁজুন যাতে বাম অ্যারের যোগফল c++ ব্যবহার করে ডান অ্যারের যোগফলের সমান হয়

  3. C++-এ অ্যারের প্রতিটি উপাদানের সারপাসার কাউন্ট খুঁজুন

  4. একটি অ্যারের সবচেয়ে বড় উপাদান খুঁজে পেতে C++ প্রোগ্রাম