আমাদের দুটি অ্যারে দেওয়া হয়েছে 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