একটি ইন্টিজার অ্যারে Arr[] এবং দুটি ভেরিয়েবল a, b দেওয়া আছে [a,b] রেঞ্জ নির্ধারণ করতে। লক্ষ্য হল যেসব ট্রিপলেটের যোগফল এই [a,b] রেঞ্জের মধ্যে পড়ে, তাদের সংখ্যা বের করা।
তিনটি for লুপ ব্যবহার করা হয়। arr[i]+arr[j]+arr[k] >= a এবং <= b হলে count বাড়ানো হয়। 0<=i<=n-2, i ইনপুট: arr[] = { 1,2,3,4,5 }, N=5, L=2, R=8 আউটপুট: ট্রিপলেট সংখ্যা: ৪ ব্যাখ্যা: যোগফল ২ থেকে ৮-এর মধ্যবর্তী ট্রিপলেট: (1,2,3)→6, (1,2,4)→7, (1,2,5)→8, (1,3,4)→8। মোট ৪টি। ইনপুট: arr[] = {2,2,2,2,2}, N=5, L=2, R=5 আউটপুট: ট্রিপলেট সংখ্যা: ০ ব্যাখ্যা: সব ট্রিপলেটের যোগফল ৬ যা [2,5] রেঞ্জে নেই।উদাহরণ
অ্যাপ্রোচ
countTriplets(int arr[], int n, int a, int b) ফাংশন অ্যারে, দৈর্ঘ্য এবং রেঞ্জ গ্রহণ করে রেঞ্জে যোগফল পড়ে এমন ট্রিপলেট রিটার্ন করে।উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int countTriplets(int arr[], int n, int a, int b) {
int count = 0;
int sum = 0;
for (int i = 0; i < n-2; i++) {
for (int j = i+1; j < n-1; j++) {
for (int k = j+1; k < n; k++) {
sum = arr[i] + arr[j] + arr[k];
if (sum >= a && sum <= b) {
count++;
}
}
}
}
return count;
}
int main() {
int Arr[] = { 5,4,3,6,8,2 };
int L = 9, R = 15;
int N = 6;
cout << endl << "Number of triplets : " << countTriplets(Arr, N, L, R);
return 0;
}
আউটপুট
Number of triplets : 14