কম্পিউটার

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


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

আসুন উদাহরণ দিয়ে বুঝতে পারি

ইনপুট − 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] - pairs: (1,2)
[2,1] - pairs: (2,1)
[1,2,3] - pairs : (1,2), (2,3), (1,3)
Total pairs : 5

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

  • ইনপুট হিসাবে একটি পূর্ণসংখ্যা অ্যারে নিন।

  • ফাংশন distinct_pairs(int arr[], int size) অ্যারে নেয় এবং স্বতন্ত্র উপাদান সাব-অ্যারে দ্বারা গঠিত কাউন্ট জোড়া ফেরত দেয়।

  • প্রারম্ভিক গণনাটিকে 0 হিসাবে নিন। ভেরিয়েবলগুলি start=end=0।

    নিন
  • উইন্ডোতে উপাদান চিহ্নিত করতে একটি ভেক্টর চেক (আকার, মিথ্যা) নিন।

  • স্টার্ট লুপ WHILE যতক্ষণ না স্টার্ট সাইজের থেকে কম হয়

  • লুপের ভিতরে, সাইজ থেকে কম শুরু না হওয়া পর্যন্ত আরেকটি লুপ শুরু করুন এবং চেক[arr[স্টার]] =0 তারপর কাউন্ট স্টার্ট - এন্ড হিসাবে সেট করুন এবং চেক[arr[start]] কে সত্য হিসাবে সেট করুন এবং শুরুটিকে 1 দ্বারা বৃদ্ধি করুন।

  • স্টার্ট লুপ যখন শেষ পর্যন্ত স্টার্ট এবং স্টার্ট সাইজের সমান নয় এবং চেক[arr[start]] =true তারপর সেট চেক[arr[end]] =false এবং শেষটি 1 দ্বারা বৃদ্ধি করুন।

  • গণনা ফেরত দিন

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int distinct_pairs(int arr[], int size){
   int count = 0;
   int start = 0;
   int end = 0;
   vector<bool> 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 এর সমান পার্থক্য সহ সমস্ত স্বতন্ত্র জোড়া গণনা করুন

  4. C++ এ একটি সাজানো অ্যারেতে পরম স্বতন্ত্র গণনা?