কম্পিউটার

C++-এ K-এর সমান সমষ্টির দুটি অ্যারে থেকে জোড়া গণনা করুন


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

আমরা i এবং j এর জন্য দুটি লুপ ব্যবহার করে অতিক্রম করব। যোগফল হলে (Arr1[i]+Arr2[j])==K। এবং জোড়াটি unordered_map-এ বিদ্যমান নেই। এটিকে মানচিত্রে যোগ করুন এবং সংখ্যা বৃদ্ধি করুন৷

উদাহরণ দিয়ে বোঝা যাক।

ইনপুট

Arr1[]={ 1,3,2,4,3,2 }; Arr2[]={ 0,2,1,2,3 }; K=4

আউটপুট

Number of pairs with sum K : 4

ব্যাখ্যা

Pairs will be
( Arr1[0], Arr2[4] ) → (1,3)
( Arr1[1], Arr2[2] ) → (3,1)
( Arr1[2], Arr2[1] ) → (2,2)
( Arr1[3], Arr2[2] ) → (3,1)
All other pairs already exist.Total unique pairs 4.

ইনপুট

Arr1[]={ 0,2,1,2,3}; Arr2[]={ 1,1,1,1,1 }; K=3

আউটপুট

Number of pairs with sum K : 1

ব্যাখ্যা

Pairs will be
( Arr1[1], Arr2[0] ) → (2,1)
All other pairs already exist.Total unique pairs 1.

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

  • আমরা যোগফলের জন্য দুটি অ্যারে Arr1[] এবং Arr2[] এবং একটি পরিবর্তনশীল K নিই।

  • Len1 এবং Len2 উভয় অ্যারের দৈর্ঘ্য বোঝাতে ব্যবহৃত হয়।

  • ফাংশন পেয়ারসুমিসকে(int arr1[],int arr2[],int k,int l1,int l2) সমস্ত ভেরিয়েবল নেয় এবং sum=k সহ উভয় অ্যারে থেকে উপাদানগুলির অনন্য জোড়ার গণনা প্রদান করে।

  • জোড়ার জন্য প্রাথমিক পরিবর্তনশীল গণনা 0 হিসাবে নিন।

  • অনন্য জোড়া সঞ্চয় করতে unordered_map umap নিন।

  • লুপের জন্য দুটি ব্যবহার করে উভয় অ্যারে অতিক্রম করুন৷

  • arr1[]-এর উপাদানগুলির জন্য i=0 থেকে i এ উপাদানের জন্য

  • যোগফল arr1[i]+arr2[j]=k কিনা পরীক্ষা করুন। যদি হ্যাঁ, umap.find(....)==umap.end() এর মাধ্যমে এই জুটি বিদ্যমান কিনা তা পরীক্ষা করুন।

  • যদি এটি umap এবং বৃদ্ধি গণনায় এই জোড়া যোগ না করে।

  • সমস্ত লুপ গণনার শেষে এই ধরনের জোড়ার মোট সংখ্যা থাকবে।

  • ফলাফল হিসাবে গণনা ফেরত দিন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int pairsumisK(int arr1[],int arr2[],int k,int l1,int l2){
   int count = 0;
   unordered_map<int, int> umap;
   for (int i = 0; i < l1; i++){
      for (int j = 0; j < l2; j++){
         int sum=arr1[i]+arr2[j];
         if(sum==k) //pairs with sum=k only{
            if(umap.find(arr1[i]) == umap.end()) //unique pairs only{
               umap.insert(make_pair(arr1[i],arr2[j]));
            }
         }
      }
   }
   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; //length of array
   cout <<endl<< "Number of pairs with sum K : "<<pairsumisK(Arr1,Arr2,K,len1,len2);
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Number of pairs with sum K : 0

  1. C++ এ সর্বাধিক যোগফল সহ দুটি অ্যারে থেকে জোড়ার যোগফল খুঁজুন

  2. C++ এ বিভাজ্য 'k' সমষ্টি সহ সাব-ম্যাট্রিক্স গণনা করুন

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

  4. দুটি BST থেকে জোড়া গণনা করুন যার যোগফল C++ এ একটি প্রদত্ত মানের x এর সমান