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

দুই অ্যারে থেকে যোগফল K হয় এমন অনন্য জোড়ার সংখ্যা গণনা C++-এ


দুটি অ্যারে Arr1[] এবং Arr2[] ও একটি সংখ্যা K দেওয়া আছে। লক্ষ্য হল (Arr1[i], Arr2[j]) আকারের অনন্য জোড়া বের করা যাদের যোগফল K।

দুটি নেস্টেড লুপ দিয়ে সব জোড়া চেক করা হয়। যোগফল K হলে unordered_map-এ সংরক্ষণ করে অনন্যতা নিশ্চিত করা হয়।

উদাহরণ

ইনপুট: Arr1[]={1,3,2,4,3,2}, Arr2[]={0,2,1,2,3}, K=4

আউটপুট: যোগফল K হয় এমন অনন্য জোড়া: ৪

ব্যাখ্যা: (1,3), (3,1), (2,2), (3,1) — ডুপ্লিকেট বাদে ৪টি।

প্রোগ্রামে ব্যবহৃত পদ্ধতি
  • দুটি অ্যারে, K, এবং তাদের দৈর্ঘ্য Len1, Len2 নেওয়া হয়।
  • pairsumisK(int arr1[], int arr2[], int k, int l1, int l2) ফাংশন অনন্য জোড়ার কাউন্ট রিটার্ন করে।
  • unordered_map দিয়ে অনন্য জোড়া ট্র্যাক করা হয়।
  • দুটি লুপে সব জোড়া চেক করে যোগফল K হলে map-এ না থাকলে ইনসার্ট এবং count বাড়ানো হয়।
C++ কোড উদাহরণ
#include 
using namespace std;

int pairsumisK(int arr1[], int arr2[], int k, int l1, int l2){
    int count = 0;
    unordered_map umap;
    for (int i = 0; i < l1; i++){
        for (int j = 0; j < l2; j++){
            int sum = arr1[i] + arr2[j];
            if(sum == k){
                if(umap.find(arr1[i]) == umap.end()){
                    umap.insert(make_pair(arr1[i], arr2[j]));
                    count++;
                }
            }
        }
    }
    return count;
}

int main(){
    int Arr1[] = { 1,2,3,0,2,4 };
    int Arr2[] = { 3,2,5,2 };
    int len1 = sizeof(Arr1)/sizeof(Arr1[0]);
    int len2 = sizeof(Arr2)/sizeof(Arr2[0]);
    int K = 5;
    cout << endl << "যোগফল K হয় এমন অনন্য জোড়া: " << pairsumisK(Arr1, Arr2, K, len1, len2);
    return 0;
}
আউটপুট

উপরোক্ত কোড রান করলে আউটপুট:

যোগফল K হয় এমন অনন্য জোড়া: ০
  1. দুই অ্যারে থেকে সর্বোচ্চ জোড়া যোগফল বের করা (C++)

  2. সাব-ম্যাট্রিক্সের সম k দিয়ে বিভাজ্য হলে তাদের সংখ্যা গণনা (C++)

  3. দুটি অ্যারে থেকে ক্রমানুসারে উপাদান বেছে নেয়ার সর্বোচ্চ যোগফল (C++ প্রোগ্রাম)

  4. C++-এ দুটি BST-র নোড জোড়া যাদের যোগফল x গণনা