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

C-তে অ্যারেতে একই উপাদানের দুটি ঘটনার মধ্যে সর্বোচ্চ দূরত্ব নির্ণয়

একটি পূর্ণসংখ্যার অ্যারে দেওয়া আছে যেখানে একই উপাদান একাধিকবার রয়েছে। কাজটি হলো অ্যারেতে যেকোনো একই উপাদানের দুটি ঘটনার মধ্যে সর্বোচ্চ দূরত্ব (ইন্ডেক্স পার্থক্য) খুঁজে বের করা।

উদাহরণ

ইনপুট: Arr[] = { 1, 2, 4, 1, 3, 4, 2, 5, 6, 5 }

আউটপুট: একই উপাদানের দুটি ঘটনার মধ্যে সর্বোচ্চ দূরত্ব - 4

ব্যাখ্যা: পুনরাবৃত্তি সংখ্যাগুলো ও তাদের ইনডেক্স:

১. ১: প্রথম ইনডেক্স ০, শেষ ইনডেক্স ৩ → দূরত্ব = ৩-০-১ = ২
২. ২: প্রথম ইনডেক্স ১, শেষ ইনডেক্স ৬ → দূরত্ব = ৬-১-১ = ৪
৩. ৫: প্রথম ইনডেক্স ৭, শেষ ইনডেক্স ৯ → দূরত্ব = ৯-৭-১ = ১
সর্বোচ্চ দূরত্ব = ৪

ইনপুট: Arr[] = { 10, 20, 1, 10, 10, 21, 12, 0 }

আউটপুট: ৩

নোট: যদি অ্যারেতে কোনো পুনরাবৃত্তি সংখ্যা না থাকে, তবে -1 রিটার্ন করবে।

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

  • পুনরাবৃত্তি সংখ্যা ধারণকারী অ্যারে Arr[] নেওয়া হয়েছে।
  • maxDistance(int arr[], int n) ফাংশনটি সর্বোচ্চ দূরত্ব গণনা করে।
  • maxD = -1 দিয়ে ইনিশিয়ালাইজ।
  • দুটি নেস্টেড লুপ দিয়ে সব জোড়া (i, j) চেক করা হয়।
  • যদি arr[i] == arr[j] হয়, তবে দূরত্ব = j - i - 1 হিসাব করা হয়।
  • এই মান maxD-এय़ বড় হলে maxD আপডেট করা হয়।
  • শেষে maxD রিটার্ন করা হয়।

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

#include <stdio.h>
#include <math.h>

int maxDistance(int arr[], int n) {
    int maxD = -1;
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (arr[i] == arr[j]) {
                int temp = abs(j - i - 1);
                maxD = maxD > temp ? maxD : temp;
            }
    return maxD;
}

int main() {
    int Arr[] = {1, 2, 4, 1, 3, 4, 2, 5, 6, 5};
    printf("একই উপাদানের দুটি ঘটনার মধ্যে সর্বোচ্চ দূরত্ব: %d", maxDistance(Arr, 10));
    return 0;
}

আউটপুট

একই উপাদানের দুটি ঘটনার মধ্যে সর্বোচ্চ দূরত্ব - 4
  1. C++-এ শহর এবং স্টেশনের মধ্যে সর্বোচ্চ দূরত্ব নির্ণয়

  2. C++-এ BST-এ দুটি নোডের মধ্যে সর্বোচ্চ উপাদান

  3. অ্যারেতে যেকোনো দুটি এলিমেন্টের ন্যূনতম পার্থক্য (C++)

  4. অ্যারেতে দুটি সংখ্যার মধ্যকার ন্যূনতম দূরত্ব বের করা C++-তে