কম্পিউটার

C++-এ সমস্ত অ্যারের উপাদানকে সমান করতে প্রয়োজনীয় ক্রিয়াকলাপগুলির সংখ্যা খুঁজুন


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

অপারেশনটিকে অ্যারের সমস্ত উপাদানগুলিতে সর্বাধিক ওজন সহ উপাদান থেকে সমান ওজনের বিতরণ হিসাবে সংজ্ঞায়িত করা হয় .

অ্যারে উপাদান সমান করা সম্ভব না হলে, প্রিন্ট -1।

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

Input : arr[] = {7, 3, 3, 3}
Output : 3

ব্যাখ্যা

বিতরণের পরে অ্যারে হল {4, 4, 4, 4}

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

সমস্যার একটি সহজ সমাধান হল অ্যারের সবচেয়ে বড় মান খুঁজে বের করা। এবং তারপর এই বৃহত্তম মান ব্যবহার করে পরীক্ষা করুন যে অ্যারের সমস্ত উপাদান সমান এবং মানটি অ্যারের সর্বাধিক মান থেকে n (বা এর গুণিতক) বিয়োগের সমান। যদি হ্যাঁ, n ফিরুন, না হলে -1 ফেরত দিন (সম্ভব নয় বোঝান)।

উদাহরণ

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

#include<bits/stdc++.h>
using namespace std;
int findOperationCount(int arr[],int n){
   int j = 0, operations = 0;
   int maxVal = arr[0];
   int minVal = arr[0];
   int maxValInd = 0;
   for (int i = 1; i < n; i++){
      if(arr[i] > maxVal){
         maxVal = arr[i];
         maxValInd = i;
      }
      if(arr[i] < minVal){
         minVal = arr[i];
      }
   }
   for (int i =0;i<n;i++){
      if (arr[i] != maxVal && arr[i] <= minVal && arr[i] != 0){
         arr[j] += 1;
         arr[maxValInd] -= 1;
         maxVal -= 1;
         operations += 1;
         j += 1;
      }
      else if (arr[i] != 0){
         j += 1;
      }
   }
   for (int i = 0; i < n; i++){
      if (arr[i] != maxVal){
         operations = -1;
         break;
      }
   }
   return operations;
}
int main(){
   int arr[] = {4, 4, 8, 4};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout<<"The number of operations required to make all array  elements Equal is "<<findOperationCount(arr, n);
   return 0;
}

আউটপুট

The number of operations required to make all array elements Equal is 3

  1. C++ ব্যবহার করে একটি অ্যারের মধ্যে একটি সংখ্যার ফ্রিকোয়েন্সি খুঁজুন।

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

  3. C++-এ অ্যারের সমস্ত উপাদান একই করতে ন্যূনতম ডিলিট অপারেশন।

  4. পাইথনে সমস্ত অ্যারে উপাদানকে সমান করতে প্রয়োজনীয় ক্রিয়াকলাপগুলির সংখ্যা৷