কম্পিউটার

একটি অ্যারেতে জোড়া গণনা করুন যাতে একটির ফ্রিকোয়েন্সি C++ এ অন্যটির কমপক্ষে মান হয়


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

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

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

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

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

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

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

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

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

পদ্ধতিতে আমরা প্রথমে অ্যারের উপাদানগুলির ফ্রিকোয়েন্সি সম্বলিত একটি বিন্যাসবিহীন মানচিত্র তৈরি এবং পপুলেট করব। লুপ ব্যবহার করে unordered_map অতিক্রম করুন। প্রতিটি উপাদান এবং এর কম্পাঙ্কের জন্য, যদি কোনো ফ্রিকোয়েন্সি বেশি পাওয়া যায়, তাহলে জোড়ার সংখ্যা বৃদ্ধি করুন।

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

  • ফাংশন ফ্রিকোয়েন্সি_অন্যান্য_মান (int arr[], int size) অ্যারে এবং এর আকার নেয় এবং জোড়ার সংখ্যা প্রদান করে যেমন জোড়া (A,B) যেখানে A কমপক্ষে B বার হয় এবং এর বিপরীতে।

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • arr[] এর উপাদান এবং তাদের ফ্রিকোয়েন্সির জন্য unordered_map um নিন।

  • জোড়া শুরু=it.second এর প্রতিটি প্রথম মানের জন্য এবং এর জন্য ব্যবহার করে মানচিত্র অতিক্রম করুন; (it=iterator), ফ্রিকোয়েন্সির জন্য ট্রাভার্স ম্যাপ>=লুপের জন্য ব্যবহার করা শুরু করুন।

  • এই ধরনের জোড়ার জন্য সংখ্যা বৃদ্ধি।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int frequency_other_value(int arr[], int len){
   int count = 0;
   unordered_map<int, int> um;
   for (int i = 0; i < len; ++i){
      um[arr[i]]++;
   }
   for (auto it : um){
      int start = it.first;
      int end = it.second;
      for (int j = 1; j <= end; j++){
         if (um[j] >= start){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 3, 3, 3, 5, 5, 6, 6};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of pairs in an array such that frequency of one is at least value of other are: "<<frequency_other_value(arr, size);
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Count of pairs in an array such that frequency of one is at least value of other are: 1

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

  2. C++ এ একটি অ্যারেতে ক্ষুদ্রতম মানের ফ্রিকোয়েন্সি খুঁজুন

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

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