কম্পিউটার

C++ এ মূল ক্রমে k অ্যারের সর্বাধিক উপাদান খুঁজুন


এই সমস্যায়, আমাদেরকে n উপাদানগুলির একটি অ্যারে arr[] দেওয়া হয়েছে। আমাদের কাজ হল মূল ক্রমে অ্যারের সর্বাধিক k উপাদানগুলি খুঁজে বের করা।

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

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

ইনপুট: arr[] ={5, 1, 3, 6, 2}, k =2

আউটপুট: 5, 6

ব্যাখ্যা:

অ্যারের সবচেয়ে বড় দুটি উপাদান হল 6 এবং 5। কিন্তু আসল অ্যারেতে 6 এর আগে 5 আসে তাই আমরা সেভাবেই প্রিন্ট করেছি।

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

সমস্যা সমাধানের জন্য, এবং মূল ক্রমে k উপাদান প্রিন্ট করুন।

এর জন্য আমরা একটি decArray তৈরি করব যা arr[] এর উপাদানগুলিকে অবরোহ ক্রমে সংরক্ষণ করবে। তারপর আমরা মূল অ্যারে অতিক্রম করব এবং decArray[] ব্যবহার করে k বৃহত্তম উপাদান প্রিন্ট করব।

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

উদাহরণ

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

bool seachVal(int decArr[], int k, int ele){

   for(int i = 0; i < k; i++){
      if( decArr[i] == ele)
         return true;
   }
   return false;
}

void printKMaxEle(int arr[], int k, int n) {
   
   int decArr[n];
   for(int i = 0; i < n ; i++){
      decArr[i] = arr[i];
   }
   sort(decArr, decArr + n, greater<int>());

   for (int i = 0; i < n; ++i)
      if ( seachVal(decArr, k, arr[i]) )
         cout<<arr[i]<<" ";
}

int main() {
   
   int arr[] = { 15, 1, 3, 6, 2, 34, 8, 9 };
   int n = sizeof(arr) / sizeof(arr[0]);
   int k = 3;
   cout<<k<<" maximum elements of the array in their original order are \n";
   printKMaxEle(arr, k, n);
   return 0;
}

আউটপুট

3 maximum elements of the array in their original order are
15 34 9

  1. C++ এ একটি অ্যারেতে একটি স্থানীয় মিনিমা খুঁজুন

  2. C++ এ ধারাবাহিক উপাদানগুলির XOR ব্যবহার করে অ্যারের উপাদানগুলি খুঁজুন

  3. C++ এ একটি অ্যারেতে সর্বাধিক GCD সহ জোড়া খুঁজুন

  4. C++ এ প্রদত্ত অ্যারের উপাদানগুলির ফ্যাক্টোরিয়ালের GCD খুঁজুন