কম্পিউটার

শুধুমাত্র C++ এ অ্যারে উপাদান ব্যবহার করে একটি অ্যারেকে সমান করুন


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

অ্যারের সমস্ত উপাদান সমান করার জন্য আমাদের যোগ বা বিয়োগের ক্রিয়াকলাপগুলির সংখ্যা গণনা করতে হবে।

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

ইনপুট: arr[] ={4, 0, 3, 1, 2}

আউটপুট: 3

ব্যাখ্যা:

সমান মান হবে 2।

সামগ্রিক যোগফল একই হবে। আমরা arr[3] এর মান থেকে 1 নিব এবং তারপর এটিকে arr[1] এ যোগ করব।

তারপরে আমরা arr[0] এর মান থেকে 2 নেব এবং এটিকে arr[1]-এ যোগ করব।

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

সমস্যার একটি সহজ সমাধান হল অ্যারের থেকে উপাদান খুঁজে বের করা যা উপাদান হিসেবে গণ্য করা হবে যা অ্যারের জন্য সমান উপাদান হবে।

আমরা গড় খুঁজে বের করার মাধ্যমে অপারেশনটি সম্ভব কিনা তা পরীক্ষা করব, যদি এটি পূর্ণসংখ্যা হয় তাহলে সমানীকরণ সম্ভব অন্যথায় নয়৷

সমীকরণ সম্ভব হলে, আমরা প্রয়োজনীয় ক্রিয়াকলাপের সংখ্যা গণনা করব এবং তারপরে তা ফেরত দেব। ক্রিয়াকলাপ গণনা গড়ের সাথে সমস্ত সংখ্যার পরম পার্থক্যের যোগফলের অর্ধেকের সমান।

অ্যালগরিদম:

ধাপ 1: অ্যারের সমস্ত উপাদানের গড় খুঁজুন।

ধাপ 2: গড় একটি পূর্ণসংখ্যা না হলে, -1 ফেরত দিন, ইঙ্গিত করে যে সমতা সম্ভব নয়৷

ধাপ 3: অন্যথায়, সমস্ত উপাদান এবং গড় মধ্যে পরম পার্থক্য খুঁজুন।

পদক্ষেপ 4: গড় মানের অর্ধেক ফেরত দিন।

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

উদাহরণ

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

int calcEqualisedOperations(int arr[], int n) {
   
   int sum = 0, average, operations = 0;
   for (int i = 0; i < n; i++)
      sum += arr[i];
   if (sum % n != 0)
      return -1;
   average = sum/n;
   for (int i = 0; i < n; i++)
      operations += ( abs(arr[i] - average) / 2 );

   return operations;
}

int main() {

   int arr[] = { 5, 3, 2, 6 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"Operations required to equalize an array using array elements is "<<calcEqualisedOperations(arr, n);
   return 0;
}

আউটপুট −

Operations required to equalize an array using array elements is 2

  1. STL ব্যবহার করে C++ এ অ্যারে পণ্য

  2. C++ এ পয়েন্টার গাণিতিক ব্যবহার করে অ্যারের সমষ্টি

  3. হিপ সর্ট অ্যালগরিদম ব্যবহার করে 10টি উপাদানের একটি অ্যারে সাজানোর জন্য C++ প্রোগ্রাম

  4. পয়েন্টার ব্যবহার করে একটি অ্যারের উপাদান অ্যাক্সেস করার জন্য C++ প্রোগ্রাম