সমস্যা বিবৃতি
সাইজ n এবং এলিমেন্ট x এর একটি অ্যারে “arr” দেওয়া হয়েছে, কাজ হল মধ্যম x সমান করতে অ্যারেতে যোগ করতে হবে এমন ন্যূনতম সংখ্যক উপাদান খুঁজে বের করা।
n এর দৈর্ঘ্য সহ একটি অ্যারের একটি মধ্যক হল এমন একটি উপাদান যা আমরা উপাদানগুলিকে অ-হ্রাস না হওয়া ক্রমে সাজানোর পরে অবস্থান নম্বর (n-1)/2 দখল করে। উদাহরণস্বরূপ, নীচের অ্যারের মধ্যম হল 20 −
arr1[] ={10, 20, 30, 40}
যদি arr[] ={1, 2, 3} এবং x =4 হয় তাহলে আমাদেরকে 4 সংখ্যা যোগ করতে হবে অর্থাৎ {4, 5, 5, 5} অ্যারেতে 4 এর সমান গড় করতে হবে
অ্যালগরিদম
অ্যালগরিদম খুব সহজ. আমাদের অ্যারেতে একটি সংখ্যা x যোগ করতে হবে যতক্ষণ না অ্যারের মধ্যম x
এর সমান হয়উদাহরণ
#include <iostream> #include <algorithm> using namespace std; int minNumbersToBeAdded(int *arr, int n, int x){ sort(arr, arr + n); int cnt = 0; while (arr[(n - 1)/2] != x) { arr[n] = x; ++n; sort(arr, arr + n); ++cnt; } return cnt; } int main(){ int arr[20] = {1, 2, 3}; int x = 4; int n = 3; cout << "Minimum numbers to be added = " << minNumbersToBeAdded(arr, n, x) << endl; return 0; }
আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেMinimum numbers to be added = 4