কম্পিউটার টিউটোরিয়াল

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

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

উদাহরণ

ইনপুট: arr = {1, 2, 3, 4, 5}, m = 3

আউটপুট: সর্বোচ্চ পার্থক্য: 6

ব্যাখ্যা: সর্বোচ্চ ৩টি: 3, 4, 5 → যোগফল ১২। সর্বনিম্ন ৩টি: 1, 2, 3 → যোগফল ৬। পার্থক্য = ১২ - ৬ = ৬।

ইনপুট: arr = {10, 13, 22, 8, 16, 14}, m = 4

আউটপুট: ২০

ব্যাখ্যা: সর্বোচ্চ ৪টি: 22, 16, 14, 13 → যোগফল ৬৫। সর্বনিম্ন ৪টি: 8, 10, 13, 14 → যোগফল ৪৫। পার্থক্য = ৬৫ - ৪৫ = ২০।

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

  • অ্যারে arr[] এবং m ইনপুট।
  • find_diff() ফাংশনটি অ্যারে সোর্ট করে প্রথম m এবং শেষ m উপাদানের যোগফলের পার্থক্য রিটার্ন করে।
  • সোর্টেড অ্যারেতে প্রথম m টি = সর্বনিম্ন, শেষ m টি = সর্বোচ্চ।

C++ প্রোগ্রাম উদাহরণ

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

int find_diff(int arr[], int length, int m) {
    sort(arr, arr + length);
    int maxsum = 0, minsum = 0;
    for (int i = 0; i < m; i++) {
        minsum += arr[i];
        maxsum += arr[length - i - 1];
    }
    return maxsum - minsum;
}

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#-এ দুটি DateTime-এর মধ্যে মিলিসেকেন্ড পার্থক্য নির্ণয়

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