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

স্বতন্ত্র উপাদান সমন্বিত সাব-অ্যারে থেকে জোড়া গঠনের গণনা (C++ প্রোগ্রাম)

আমাদের একটি অ্যারে arr[] দেওয়া আছে যেতে পূর্ণসংখ্যা উপাদান রয়েছে। লক্ষ্য হল arr[]-এর সাব-অ্যারে গুলোর উপাদান দিয়ে জোড়া গঠনের গণনা করা যেন প্রতিটি সাবঅ্যারেতে শুধু স্বতন্ত্র (distinct) উপাদান থাকে। যদি অ্যারেটি [1,2,2,3,3] হয়, তবে স্বতন্ত্র উপাদান সমন্বিত সাবঅ্যারেগুলো হবে [1,2] এবং [2,3]। এবং জোড়া হবে (1,2) এবং (2,3) অর্থাৎ জোড়ার গণনা ২।

উদাহরণ

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

আউটপুট: স্বতন্ত্র উপাদান সমন্বিত সাব-অ্যারে থেকে জোড়া গঠনের গণনা: 6

ব্যাখ্যা: স্বতন্ত্র উপাদান সমন্বিত সাবঅ্যারে: [1,2,5,3], সম্ভাব্য জোড়া (1,2), (1,3), (1,5), (2,5), (2,3), (5,3)। মোট ৬ জোড়া।

ইনপুট: arr[] = {1,2,1,2,3}

আউটপুট: স্বতন্ত্র উপাদান সমন্বিত সাব-অ্যারে থেকে জোড়া গঠনের গণনা: 5

ব্যাখ্যা: স্বতন্ত্র উপাদান সমন্বিত সাবঅ্যারেগুলো:

[1,2] - জোড়া: (1,2)
[2,1] - জোড়া: (2,1)
[1,2,3] - জোড়া: (1,2), (2,3), (1,3)
মোট জোড়া: 5
প্রোগ্রামে ব্যবহৃত পদ্ধতি
  • ইনপুট হিসেবে পূর্ণসংখ্যা অ্যারে নিন।
  • distinct_pairs(int arr[], int size) ফাংশন অ্যারে নেয় এবং স্বতন্ত্র উপাদান সমন্বিত সাব-অ্যারে থেকে জোড়া গঠনের গণনা ফেরত দেয়।
  • আরম্ভিক গণনা ০ নিন। start=end=0 ভেরিয়েবল নিন।
  • check(size, false) নামে একটি ভেক্টর নিন উইন্ডোর উপাদান চিহ্নিত করার জন্য।
  • WHILE লুপ শুরু করুন start size-এর চেয়ে ছোট रहने পর্যন্ত।
  • লুপের ভিতরে আরেকটি WHILE লুপ শুরু করুন start size-এর চেয়ে ছোট रहने পর্যন্ত AND check[arr[start]] = 0 পর্যন্ত। count কে start - end হিসেবে সেট করুন এবং check[arr[start]] কে true সেট করুন এবং start কে ১ বাড়ান।
  • WHILE লুপ শুরু করুন end start-এর চেয়ে ছোট रहने পর্যন্ত AND start size-এর সমান নয় AND check[arr[start]] = true পর্যন্ত। check[arr[end]] = false সেট করুন এবং end কে ১ বাড়ান।
  • count ফেরত দিন।
  • ফলাফল প্রিন্ট করুন।
C++ প্রোগ্রাম উদাহরণ
#include 
using namespace std;

int distinct_pairs(int arr[], int size) {
    int count = 0;
    int start = 0;
    int end = 0;
    vector check(size, false);
    while (start < size) {
        while (start < size && !check[arr[start]]) {
            count += (start - end);
            check[arr[start]] = true;
            start++;
        }
        while (end < start && (start != size && check[arr[start]])) {
            check[arr[end]] = false;
            end++;
        }
    }
    return count;
}

int main() {
    int arr[] = {5, 1, 8, 2, 1, 7, 9, 1};
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Count of pairs formed by distinct element sub-arrays are: " << distinct_pairs(arr, size);
    return 0;
}
আউটপুট
Count of pairs formed by distinct element sub-arrays are: 17
  1. C++-এ অ্যারেতে ভাগযোগ্য জোড়া গণনা

  2. C++-এ অ্যারেতে স্বতন্ত্র উপাদান গণনা

  3. C++-এ পার্থক্য K হয় এমন আলাদা জোড়া গণনা (Count Distinct Pairs with Difference K)

  4. C++ তে সর্টেড অ্যারেতে এবসোলিউট ডিস্টিংক্ট কাউন্ট