একটি অ্যারে দেওয়া আছে যাতে ত্রিভুজের বাহুগুলোর দৈর্ঘ্য আছে। লক্ষ্য হল সেই অ্যারে থেকে যেকোনো তিন বাহু নিয়ে কতগুলো ত্রিভুজ বানানো সম্ভব তা বের করা।
যেকোনো দুটির যোগফল যদি তৃতীয়টির চেয়ে বড় হয়, তবে সেসে তিন বাহু একটি ত্রিভুজ বানাতে পারে। count বাড়ানো হয়।
উদাহরণ
ইনপুট: arr[] = {1,2,4,5}
আউটপুট: সম্ভাব্য ত্রিভুজের সংখ্যা: ১
ব্যাখ্যা: বাহু (2,4,5) শুধুই ত্রিভুজ বানাতে পারে কারণ 2+4>5, 4+5>2, 2+5>4
ইনপুট: arr[] = {4,5,6,3,2}
আউটপুট: সম্ভাব্য ত্রিভুজের সংখ্যা: ৭
ব্যাখ্যা: বাহু (4,5,6), (4,5,2), (4,5,3), (4,3,2), (5,6,3), (5,6,2) ত্রিভুজ বানাতে পারে।
অ্যাপ্রোচ
- ধনাত্মক সংখ্যার ইন্টিজার অ্যারে arr[] নেওয়া হয়।
countTriangles(int arr[], int n)ফাংশন অ্যারে এবং দৈর্ঘ্য গ্রহণ করে সম্ভাব্য ত্রিভুজের সংখ্যা রিটার্ন করে।- প্রাথমিক ত্রিভুজ গণনা ০।
- তিনটি for লুপ তিন বাহুর জন্য। আউটার 0<=i
- বাহু arr[i], arr[j], arr[k] যাচাই করা হয় ত্রিভুজের শর্ত পূরণ করে কিনা: arr[i]+arr[j]>arr[k] && arr[i]+arr[k]>arr[j] && arr[k]+arr[j]>arr[i]। সত্য হলে count বাড়ানো হয়।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int countTriangles(int arr[], int n) {
int count = 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++) {
if (arr[i] + arr[j] > arr[k] && arr[i] + arr[k] > arr[j] && arr[k] + arr[j] > arr[i]) {
count++;
}
}
}
}
return count;
}
int main() {
int Arr[] = { 1,2,5,3,6,8,10 };
int len = sizeof(Arr) / sizeof(Arr[0]);
cout << "count of Triangles possible : " << countTriangles(Arr, len);
return 0;
}
আউটপুট
count of Triangles possible : 8