আমাদেরকে একটি অ্যারে দেওয়া হয়েছে, ধরা যাক, যে কোনো আকারের পূর্ণসংখ্যা মানের arr[] এবং কাজটি হল একটি প্রদত্ত অ্যারেতে উপলব্ধ স্বতন্ত্র জোড়ার সংখ্যা গণনা করা যার যোগফলও একই অ্যারেতে বিদ্যমান।পি>
এক ধরণের ডেটা স্ট্রাকচার অ্যারে করে যা একই ধরণের উপাদানগুলির একটি নির্দিষ্ট-আকারের অনুক্রমিক সংগ্রহ সঞ্চয় করতে পারে। একটি অ্যারে ডেটা সংগ্রহের জন্য ব্যবহার করা হয়, তবে একই ধরণের ভেরিয়েবলের সংগ্রহ হিসাবে একটি অ্যারেকে ভাবতে প্রায়ই এটি বেশি কার্যকর।
মনে রাখার মতো পয়েন্ট
-
একটি জোড়াকে তাদের অর্ডার নির্বিশেষে একই উপাদানের সাথে একবার গণনা করা হবে। উদাহরণস্বরূপ, (3,2) এবং (2,3) 1 হিসাবে গণনা করা হবে।
-
যদি একটি অ্যারেতে একাধিকবার একটি সংখ্যা থাকে তবে এটি একটি জোড়া গঠনের জন্য ঠিক দুইবার বিবেচিত হবে। উদাহরণস্বরূপ, যদি একটি অ্যারেতে {2, 2, 2, 2} হিসাবে উপাদান থাকে তবে জোড়াটি হবে (2,2) এবং এটি 1 হিসাবে গণনা করা হবে।
উদাহরণস্বরূপ
Input − int arr = {6, 4, 10, 14}
Output − count is 2 ব্যাখ্যা − একটি অ্যারের যোগফলের সাথে জোড়া হল (6,4) এবং (10,4) তাই গণনা হল 2
Input − int arr = {6, 6, 6 ,6, 6, 13}
Output − count is 0 ব্যাখ্যা − একই অ্যারের যোগফলের সাথে একটি অ্যারেতে কোন জোড়া নেই। সুতরাং, গণনা 0।
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
একটি অ্যারে তৈরি করুন চলুন বলি, আরার[]
-
length() ফাংশন ব্যবহার করে একটি অ্যারের দৈর্ঘ্য গণনা করুন যা একটি অ্যারের উপাদান অনুযায়ী একটি পূর্ণসংখ্যা মান প্রদান করবে।
-
একটি অস্থায়ী পরিবর্তনশীল নিন যা উপাদানের গণনা সংরক্ষণ করবে।
-
একটি মানচিত্র টাইপ ভেরিয়েবল তৈরি করুন, আসুন mp
বলি -
স্টার্ট লুপ i থেকে 0 এবং i একটি অ্যারের আকারের চেয়ে কম
-
পেয়ার টাইপ ভেরিয়েবলের আরেকটি মানচিত্র তৈরি করুন, আসুন par বলি
-
স্টার্ট লুপ i থেকে 0 এবং i একটি অ্যারের আকারের চেয়ে কম
-
লুপের ভিতরে, j থেকে i+1 এবং j একটি অ্যারের আকারের চেয়ে কম দিয়ে আরেকটি লুপ শুরু করুন
-
লুপের ভিতরে, mp[arr[i]+arr[j]]> 0 এবং pr[{arr[i], arr[j] }] =0 কিনা তা পরীক্ষা করুন তারপর গণনা 1 দ্বারা বৃদ্ধি করুন
-
1
দ্বারা par[{ arr[i], arr[j] }] বৃদ্ধি -
ইনক্রিমেন্ট par[{ arr[j], arr[i] }] 1
দ্বারা -
গণনা ফেরত দিন
-
ফলাফল প্রিন্ট করুন।
উদাহরণ
#include <iostream>
#include <map>
using namespace std;
// Returns number of pairs in ar[0..n-1] with
// sum equal to 'sum'
int countpairs(int ar[], int n){
// Store counts of all elements in map m
// to find pair (ar[i], sum-ar[i])
// because (ar[i]) + (sum - ar[i]) = sum
map<int, int> mymap;
for (int i = 0; i < n; i++){
mymap[ar[i]]++;
}
// To remove duplicate items we use result map
map<pair<int, int>, int> p;
int result = 0;
// Considering all pairs
for (int i = 0; i < n; i++){
for (int j = i + 1; j < n; j++){
// If sum of current pair exists
if (mymap[ar[i] + ar[j]] > 0 && p[{ ar[i], ar[j] }] ==0){
result++;
}
// Inserting the current pair both ways to avoid
// duplicates.
p[{ ar[i], ar[j] }]++;
p[{ ar[j], ar[i] }]++;
}
}
return result;
}
// main function
int main(){
int ar[] = { 6, 4, 10, 14 };
int n = sizeof(ar) / sizeof(ar[0]);
cout << "count is "<<countpairs(ar, n);
return 0;
} আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
count is 2