কম্পিউটার

C এ m উপাদানের দুটি উপসেটের মধ্যে সর্বোচ্চ পার্থক্য


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

আসুন এখন বুঝতে পারি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −

ইনপুট

arr = {1,2,3,4,5} ; m=3

আউটপুট

Maximum difference here is : 6

ব্যাখ্যা − এখানে সর্বোচ্চ 3টি সংখ্যা হল 3,4,5 এবং যোগফল হল 12৷ সর্বনিম্ন 3টি সংখ্যা হল 1,2,3 এবং যোগফল হল 6৷ তাই সর্বোচ্চ বা সর্বোচ্চ পার্থক্য হল 12-6 যা হল 6৷

ইনপুট

arr = {10,13,22,8,16,14}; m=4

আউটপুট

Maximum difference here is : 20

ব্যাখ্যা − এখানে সর্বোচ্চ 4টি সংখ্যা হল 22,16,14,13 এবং যোগফল হল 65। সর্বনিম্ন 4টি সংখ্যা হল 8,10,13,14 এবং যোগফল হল 45। তাই সর্বোচ্চ বা সর্বোচ্চ পার্থক্য হল 65-45 যা 20।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • সেট তৈরির জন্য ইনপুট অ্যারে অ্যারে[] এবং একটি সংখ্যা m নিন

  • find_diff() ফাংশনে আমরা ইনপুট অ্যারে এবং এর দৈর্ঘ্য অতিক্রম করছি এবং m উপাদানের সেটের যোগফলের সর্বোচ্চ পার্থক্য ফিরিয়ে দিচ্ছি।

  • এখানে আমরা প্রথমে অ্যারে অ্যারের উপাদানগুলিকে বাছাই করব।

  • তারপর আমরা প্রথম m এবং শেষ m উপাদানগুলির যোগফল খুঁজে পাব কারণ এগুলি হবে সবচেয়ে কম m এবং সর্বোচ্চ m সংখ্যার arr[]।

  • অবশেষে আমরা পার্থক্য ফিরিয়ে দিই।

  • দ্রষ্টব্য − sort(arr[],int) সাজানো অ্যারে ফেরত দেয় বলে ধরে নেওয়া হয়।

উদাহরণ

অ্যারে সর্ট সাজানোর জন্য
#include<stdio.h>
//create function to calculate maximum difference between sum of highest and lowest m elements of array
int find_diff(int arr[],int length,int m){
   //for sorting the array
   sort(arr,length);
   int maxsum=0, minsum=0;
   //calculate now max difference between two subsets of m elements
   for(int i=0;i<m;i++){
      minsum+=arr[i];
      maxsum+=arr[length-i-1];
   }
   return(maxsum-minsum);
}
// Driver program
int main(){
   int arr[]={1,1,2,3,5,7,1};
   int m=3;
   cout << find_diff(arr,7,m);
   return 0;
}

আউটপুট

আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −

12

  1. C++ এ সর্বাধিক দুটি উপাদান উল্টানোর পরে সর্বাধিক সাবারে যোগফল

  2. C++ এ যেকোনো দুটি উপাদানের মধ্যে ন্যূনতম পার্থক্য খুঁজুন

  3. দুটি তারিখের মধ্যে মিলিসেকেন্ডে C# পার্থক্য

  4. পাইথনের দুটি তালিকা থেকে দুটি উপাদানের মধ্যে ন্যূনতম পার্থক্য খুঁজে বের করার প্রোগ্রাম