কম্পিউটার

জোড়া গণনা করুন (p, q) যাতে p অ্যারেতে কমপক্ষে q বার হয় এবং q C++ এ কমপক্ষে p বার হয়


আমরা ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়. লক্ষ্য হল arr[] এর উপাদানগুলির জোড়ার গণনা খুঁজে বের করা যাতে জোড়ায় উপাদান থাকে ( p, q ) যেখানে p অ্যারেতে কমপক্ষে q বার এবং q অ্যারেতে কমপক্ষে p বার দেখা যায়।

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

ইনপুট − int arr[] ={ 3, 3, 3, 5, 5, 6, 6}

আউটপুট − একটি অ্যারেতে জোড়ার সংখ্যা যেমন একটির ফ্রিকোয়েন্সি অন্যটির কমপক্ষে মান − 1

ব্যাখ্যা − একটি অ্যারেতে বৈধ জোড়া যেখানে p q বার হয় এবং q হয় p বার হয় (3, 3) যেমন 3 একটি অ্যারেতে 3 বার ঘটছে। সুতরাং শুধুমাত্র একটি বৈধ জোড়া আছে তাই গণনা হল 1।

ইনপুট − int arr[] ={ 3, 3, 3, 3, 3, 5, 5, 5, 6, 6}

আউটপুট − একটি অ্যারেতে জোড়ার সংখ্যা যেমন একটির ফ্রিকোয়েন্সি অন্যটির কমপক্ষে মান − 1

ব্যাখ্যা − একটি অ্যারের বৈধ জোড়া যেখানে p q বার হয় এবং q হয় p বার হয় (3, 3), (5, 5) এবং (3, 5) যেমন 3 5 বার ঘটছে এবং 5 একটি অ্যারেতে 3 বার হচ্ছে . সুতরাং তিনটি বৈধ জোড়া আছে তাই গণনা হল 3৷

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

  • পূর্ণসংখ্যা উপাদানগুলির একটি অ্যারে ইনপুট করুন এবং একটি অ্যারের আকার গণনা করুন এবং আরও প্রক্রিয়াকরণের জন্য ফাংশনে ডেটা প্রেরণ করুন

  • p এবং q

    এর উপস্থিতি সঞ্চয় করার জন্য একটি অস্থায়ী পরিবর্তনশীল গণনা ঘোষণা করুন
  • টাইপ ভেক্টরের একটি পরিবর্তনশীল vec তৈরি করুন এবং unordered_map টাইপের um

  • স্টার্ট লুপ ফর 0 থেকে একটি অ্যারের আকার পর্যন্ত

  • লুপের ভিতরে, um[arr[i]] কে 1 দ্বারা সেট করুন এবং চেক করুন যদি um 1 হয় তাহলে ভেক্টরে arr[i] চাপুন

  • 0 থেকে একটি ভেক্টরের আকার পর্যন্ত অন্য লুপ শুরু করুন এবং IF um[vec[i]

  • লুপের ভিতরে জে চেক করুন IF um[j]>=vec[i] তারপর গণনা 1 দ্বারা বৃদ্ধি করুন

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

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int pair_count(int arr[], int len){
   int count = 0;
   vector<int> vec;
   unordered_map<int, int> um;
   for (int i = 0; i < len; i++){
      um[arr[i]]++;
      if (um[arr[i]] == 1){
         vec.push_back(arr[i]);
      }
   }
   for (int i = 0; i < vec.size(); i++){
      if (um[vec[i]] < vec[i]){
         continue;
      }
      else if (um[vec[i]] == vec[i]){
         count++;;
      }
      else{
         count++;
         for (int j = vec[i] + 1; j <= um[vec[i]]; j++){
            if (um[j] >= vec[i]){
               count++;
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 1, 1, 1, 5, 5, 1};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of pairs (p, q) such that p occurs in array at least q times and q occurs at least
p times are: "<<pair_count(arr, size);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Count of pairs (p, q) such that p occurs in array at least q times and q occurs at least p times are: 1

  1. অ্যারেতে সবচেয়ে বড় ডি খুঁজুন যেমন সি++ এ a + b + c =d

  2. একটি অ্যারেতে a, b, c এবং d চারটি উপাদান খুঁজুন যেমন C++ এ a+b =c+d

  3. C++ ব্যবহার করে একটি অ্যারেতে জোড়ার সংখ্যা খুঁজুন যাতে তাদের XOR 0 হয়।

  4. একটি অ্যারেতে সমস্ত জোড়া (a, b) খুঁজুন যেমন একটি % b =k C++ এ