আমাদের একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে, যেমন arr[], এবং আমাদের কাজ হল সেই অ্যারেতে থাকা স্বতন্ত্র জোড়াগুলির সংখ্যা গণনা করা যাদের যোগফলও একই অ্যারেতে বিদ্যমান।
মনে রাখার বিষয়গুলি
- একই উপাদান নিয়ে জোড়া একবারই গণনা হবে তাদের ক্রম নির্বিশেষে। উদাহরণস্বরূপ, (3,2) এবং (2,3) একই হিসেবে গণ্য হবে।
- যদি কোনো সংখ্যা অ্যারেতে একাধিকবার থাকে তবে সেটি জোড়া তৈরি করতে ঠিক দুইবার বিবেচিত হবে। উদাহরণস্বরূপ, যদি অ্যারেতে উপাদান থাকে {2, 2, 2, 2} তবে জোড়া হবে (2,2) এবং এটিকে ১বার গণ্য হবে।
উদাহরণ
ইনপুট − int arr = {6, 4, 10, 14} আউটপুট − গণনা 2
ব্যাখ্যা − অ্যারেতে যোগফল সহ জোড়াগুলো হল (6,4) এবং (10,4), তাই গণনা 2।
ইনপুট − int arr = {6, 6, 6, 6, 6, 13} আউটপুট − গণনা 0
ব্যাখ্যা − একই অ্যারেতে যোগফল সহ কোনো জোড়া নেই। তাই গণনা 0।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- একটি অ্যারে তৈরি করুন, যেমন
arr[] length()ফাংশন দিয়ে অ্যারের দৈর্ঘ্য গণনা করুন- একটি অস্থায়ী ভেরিয়েবল নিন যা উপাদানগুলির গণনা সংরক্ষণ করবে
- একটি
mapটাইপ ভেরিয়েবল তৈরি করুন, যেমনmp i = 0থেকেi < sizeপর্যন্ত লুপ শুরু করুন- জোড়াগুলোর জন্য আরেকটি
mapতৈরি করুন, যেমনpar - আরেকটি লুপ
i = 0থেকেi < sizeপর্যন্ত শুরু করুন - লুপের ভিতরে
j = i+1থেকেj < sizeপর্যন্ত অন্য একটি লুপ শুরু করুন - যদি
mp[arr[i]+arr[j]] > 0এবংpr[{arr[i], arr[j]}] == 0হয় তবেcount1 বৃদ্ধি করুন par[{ arr[i], arr[j] }]1 বৃদ্ধি করুনpar[{ arr[j], arr[i] }]1 বৃদ্ধি করুনcountফেরত দিন- ফলাফল প্রিন্ট করুন
উদাহরণ কোড
#include <iostream>
#include <map>
using namespace std;
// ar[0..n-1]-এ 'sum' যোগফল वाले জোড়ার সংখ্যা ফেরত দেয়
int countpairs(int ar[], int n) {
// ম্যাপে সব উপাদানের ফ্রিকোয়েন্সি সংরক্ষণ করুন
// যাতে জোড়া (ar[i], sum-ar[i]) খুঁজে পাওয়া যায়
// কারণ (ar[i]) + (sum - ar[i]) = sum
map<int, int> mymap;
for (int i = 0; i < n; i++) {
mymap[ar[i]]++;
}
// ডুপ্লিকেট এড়াতে result map ব্যবহার করুন
map<pair<int, int>, int> p;
int result = 0;
// সব জোড়া বিবেচনা করুন
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
// যদি বর্তমান জোড়ার যোগফল বিদ্যমান থাকে
if (mymap[ar[i] + ar[j]] > 0 && p[{ ar[i], ar[j] }] == 0) {
result++;
}
// বর্তমান জোড়া উভয় পথে ইনসার্ট করুন ডুপ্লিকেট এড়াতে
p[{ ar[i], ar[j] }]++;
p[{ ar[j], ar[i] }]++;
}
}
return result;
}
// main ফাংশন
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