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

C++-এ অ্যারেতে অ্যাবসোলিউট ডিফারেন্স K-র চেয়ে ছোট বা সমান এলিমেন্ট পেয়ারের সর্বোচ্চ সংখ্যা গণনা


আমাদের একটি ইন্টিজার অ্যারে arr[] এবং একটি পজিটিভ ইন্টিজার k দেওয়া আছে। কাজ হল অ্যারেতে jene যেগুলোর অ্যাবসোলিউট ডিফারেন্স (absolute difference) k-র চেয়ে ছোট বা সমান, সেই এলিমেন্ট পেয়ারের (বা সাবসেটের) সর্বোচ্চ সংখ্যা বের করা।

উদাহরণ:

ইনপুট: arr[] = {2, 3, 6, 12, 14}, k = 5 → আউটপুট: count is: 3 (সাবসেট: {2, 3, 6})

ইনপুট: arr[] = {2, 3, 6, 12, 14}, k = 10 → আউটপুট: count is: 4 (সাবসেট: {2, 3, 6, 12})

ইনপুট: arr[] = {2, 3, 6, 12, 14}, k = 0 → আউটপুট: count is: 0

অ্যালগরিদম (স্লাইডিং উইন্ডো অন সোর্টেড অ্যারে)

  • অ্যারে সর্ট করুন

  • দুটি পয়েন্টার i, j = 0 দিয়ে শুরু করুন

  • i = 0 থেকে n-1 পর্যন্ত: j বাড়াতে থাকুন যতক্ষণ arr[j] <= arr[i] + k

  • ম্যাক্সimum (j - i) ট্র্যাক করুন

  • ফলাফল রিটার্ন করুন

প্রোগ্রাম

#include <iostream> 
#include <algorithm> 
using namespace std; 

int countmax(int arr[], int size, int K) { 
    int result = 0; 
    int i = 0, j = 0; 
    sort(arr, arr + size); 
    for (i = 0; i < size; i++) { 
        while (j < size && arr[j] <= arr[i] + K) j++; 
        if (result < (j - i)) result = (j - i); 
    } 
    return result; 
} 

int main() { 
    int arr[] = { 2, 3, 6, 12, 14 }; 
    int size = sizeof(arr) / sizeof(arr[0]); 
    int K = 5; 
    cout << "count is " << countmax(arr, size, K) << endl; 
    return 0; 
}

আউটপুট

count is 3
  1. C++-এ ট্রি-এ X-এর সাথে निरপেক্ষ পার্থক্য সর্বনিম্ন হয় এমন নোড খুঁজে বের করা

  2. C++ তে অ্যারেতে জোড় ও বিজোড় ইনডেক্সের এবসোলিউট ডিফারেন্স

  3. C++-এ অ্যারেতে জোড় ও বিজোড় ইনডেক্সের উপাদানগুলোর tuyệt đối পার্থক্য

  4. C++-এ অ্যারেতে সব জোড়া সन्नিহিত উপাদানগুলোর tuyệt দায়ক পার্থক্য