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

অ্যারেতে a+b+c=d হওয়া সর্বোচ্চ d বের করা (C++)

একটি ইন্টিজার সেট দেওয়া আছে। সেটের মধ্যে থেকে a, b, c, d খুঁজে বের করতে হবে যাতে a+b+c=d এবং d সর্বোচ্চ হয়। Hashing ব্যবহার করুন: সব জোড়ার যোগফল (a+b) হ্যাশ টেবিলে রাখুন, তারপর (c,d) জোড়া চেক করুন d-c হ্যাশে আছে কিনা।

উদাহরণ

#include <iostream>
#include <unordered_map>
#include <climits>
using namespace std;

int findElementsInSet(int arr[], int n) {
    unordered_map> mp;
    for (int i = 0; i < n-1; i++)
        for (int j = i+1; j < n; j++)
            mp[arr[i]+arr[j]] = {i,j};

    int d = INT_MIN;
    for (int i = 0; i < n-1; i++)
        for (int j = i+1; j < n; j++) {
            int diff = abs(arr[i] - arr[j]);
            if (mp.count(diff)) {
                auto p = mp[diff];
                if (p.first != i && p.first != j && p.second != i && p.second != j)
                    d = max(d, max(arr[i], arr[j]));
            }
        }
    return d;
}

int main() {
    int arr[] = {2,3,5,7,12};
    int n = 5;
    int res = findElementsInSet(arr, n);
    if (res == INT_MIN) cout << "Cannot find d";
    else cout << "Max value of d is " << res;
    return 0;
}

আউটপুট

Max value of d is 12
  1. C++ ব্যবহার করে অ্যারেতে এমন এলিমেন্ট বের করা যেটি সব এলিমেন্টকে ভাগ করে দেয়

  2. C++ ব্যবহার করে অ্যারেতে a % b = k সেটি করার সব জোড়া (a, b) বের করা

  3. C++ প্রোগ্রাম: 'k' বের করা যাতে অ্যারে সব উপাদানের সাথে মডুলাস সমান

  4. অ্যারেতে সবচেয়ে বড় এলিমেন্ট (Largest Element) বের করার C++ প্রোগ্রাম