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

C++-এ দেয়া অ্যারে এবং k-র জন্য |ai + aj – k|-র মিনিমাম পসিবল ভ্যালু


সমস্যা বিবরণ

আপনাকে n ইন্টিজারের একটি অ্যারে এবং একটি ইন্টিজার K দেওয়া আছে। যেসব আনঅর্ডার্ড পেয়ার {i, j} এর জন্য |ai + aj – k|-র এবসোলিউট ভ্যালু মিনিমাম পসিবল, সেসব পেয়ারের সংখ্যা বের করুন (যেখানে i != j)।

উদাহরণ

যদি arr[] = {0, 4, 6, 2, 4} এবং k = 7 হয়, তবে মিনিমাম ভ্যালু ১ থাকা ৫টি পেয়ার তৈরি করা যায়:

{0, 6}, {4, 2}, {4, 4}, {6, 2}, {2, 4}

অ্যালগরিদম

সব ممکن পেয়ার ওভার ইটারেট করুন এবং প্রতিটি পেয়ারের জন্য চেক করুন যে (ai + aj – K)-র ভ্যালু আমাদের কারেন্ট স্মলেস্ট ভ্যালু থেকে ছোট কিনা। উপরের কন্ডিশনের রেজাল্ট অনুযায়ী মোট তিনটি কেস থাকে −

  • abs(ai + aj – K) > smallest − কিছু করবেন না কারণ এই পেয়ার মিনিমাম পসিবল ভ্যালুতে কাউন্ট হবে না।
  • abs(ai + aj – K) = smallest − মিনিমাম পসিবল ভ্যালু দেয়া পেয়ারগুলোর কাউন্ট ইনক্রিমেন্ট করুন।
  • abs(ai + aj – K) < smallest − স্মলেস্ট ভ্যালু আপডেট করুন এবং কাউন্ট ১ সেট করুন।

উদাহরণ

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

void getPairs(int *arr, int n, int k) { 
    int minValue = INT_MAX; 
    int pairs = 0; 
    for (int i = 0; i < n; ++i) { 
        for (int j = i + 1; j < n; ++j) { 
            int val = abs(arr[i] + arr[j] - k); 
            if (val < minValue) { 
                minValue = val; 
                pairs = 1; 
            } else if (val == minValue) { 
                ++pairs; 
            } 
        } 
    } 
    cout << "Min value = " << minValue << endl; 
    cout << "Total pairs = " << pairs << endl; 
} 

int main() { 
    int arr[] = {0, 4, 6, 2, 4}; 
    int k = 7; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    getPairs(arr, n, k); 
    return 0; 
}

আউটপুট

যখন আপনি উপরের প্রোগ্রাম কম্পাইল ও এক্সিকিউট করবেন। এটি নিচের আউটপুট জেনারেট করবে:

Min value = 1 
Total pairs = 5

  1. C++-এ X = P*A + Q*B সমীকরণের জন্য মিনিমাম পজিটিভ ইন্টিজার X বের করা

  2. সি++ প্রোগ্রাম: অ্যারেতে প্রতিটি উপাদানের জন্য সবচেয়ে নিকটবর্তী বড় মান (Closest Greater Value) খুঁজে বের করা

  3. সি++ প্রোগ্রাম: অ্যারেতে প্রতিটি উপাদানের জন্য সবচেয়ে নিকটবর্তী বড় মান (Closest Greater Value) খুঁজে বের করা

  4. C++-এ সব সম্ভাব্য সাব-অ্যারে থেকে ন্যূনতম LCM এবং GCD