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

C++-এ অ্যারেতে ফ্রিকোয়েন্সি শর্ত পূরণ করা জোড়া সংখ্যা গণনা


আমাদের একটি পজিটিভ ইন্টিজার অ্যারে দেওয়া আছে। লক্ষ্য হল এমন জোড়া (A, B) বের করা যাতে A-এর ফ্রিকোয়েন্সি B এবং B-এর ফ্রিকোয়েন্সি A। (দ্রষ্টব্য: এটি পূর্ববর্তী আর্টিকেলের সাথে মিলতা রাখে কিন্তু আলাদা শর্তে।)

উদাহরণ

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

আউটপুট: ১

ব্যাখ্যা: শুধু (3,3) ভ্যালিড।

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

আউটপুট: ৩

ব্যাখ্যা: ভ্যালিড জোড়া: (3,3), (5,5), (3,5)।

অ্যালগরিদম (অনঅর্ডার্ড ম্যাপ ব্যবহার করে)

  1. অ্যারে এবং এর আকার ইনপুট নিন।
  2. unordered_map দিয়ে ফ্রিকোয়েন্সি গণনা করুন।
  3. ম্যাপ ট্রাভার্স করুন: প্রতিটি এলিমেন্ট start এবং এর ফ্রিকোয়েন্সি end জন্য, 1 থেকে end পর্যন্ত চেক করুন যে um[j] >= start কিনা। যদি হয় তবে কাউন্ট বাড়ান।
  4. মোট কাউন্ট ফেরত দিন।

C++ বাস্তবায়ন

#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 হওয়া সর্বোচ্চ d বের করা (C++)

  2. সি++ প্রোগ্রাম: অ্যারেতে সর্বনিম্ন মানের ফ্রিকোয়েন্সি (Frequency) নির্ণয়

  3. C++ ব্যবহার করে অ্যারেতে XOR ০ হয় এমন জোড়ার সংখ্যা বের করা

  4. C++ ব্যবহার করে অ্যারেতে a % b = k সেটি করার সব জোড়া (a, b) বের করা