আমাদের একটি অ্যারে দেওয়া হয়েছে যাতে ত্রিভুজগুলির বাহুর দৈর্ঘ্য রয়েছে। লক্ষ্য হল সম্ভাব্য ত্রিভুজের সংখ্যা খুঁজে বের করা যা সেই অ্যারে থেকে যেকোনো তিনটি বাহু নিয়ে তৈরি করা যেতে পারে।
যেকোনো দুটির যোগফল সর্বদা> তৃতীয় দিক কিনা তা পরীক্ষা করে আমরা এটি করব। যদি হ্যাঁ এই তিনটি বাহু একটি ত্রিভুজ তৈরি করতে পারে। সম্ভাব্য ত্রিভুজগুলির সংখ্যা বৃদ্ধি করুন যা তৈরি করা যেতে পারে।
উদাহরণ দিয়ে বোঝা যাক।
ইনপুট − arr[]={1,2,4,5}
আউটপুট − সম্ভাব্য ত্রিভুজের গণনা − 1
ব্যাখ্যা − বাহু (2,4,5) শুধুমাত্র 2+4>5 এবং 4+5>2 এবং 2+5>4
হিসাবে একটি ত্রিভুজ তৈরি করতে পারেইনপুট − arr[]={4,5,6,3,2}
আউটপুট − সম্ভাব্য ত্রিভুজের সংখ্যা − 7
ব্যাখ্যা − পার্শ্ব (4,5,6), (4,5,2), (4,5,3), (4,3,2), (5,6,3), (5,6,2) পারে ত্রিভুজ তৈরি করুন।
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
আমরা এলোমেলো ধনাত্মক সংখ্যা দিয়ে শুরু করা একটি পূর্ণসংখ্যা অ্যারে অ্যারে নিই।
-
ফাংশন countTriangles(int arr[], int n) অ্যারে এবং এর দৈর্ঘ্য নেয় এবং সম্ভাব্য ত্রিভুজগুলি ফেরত দেয় যা তৈরি করা যেতে পারে।
-
ত্রিভুজগুলির প্রাথমিক গণনা 0 হিসাবে নিন।
-
তিন দিকের লুপের জন্য তিনটি নিন।
-
সবচেয়ে বাইরের লুপ 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] চেক করুন যদি সত্যিকারের বৃদ্ধি গণনা হয়।
-
ফলাফল হিসাবে রিটার্ন গণনা।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int countTriangles(int arr[], int n){ // Count of triangles 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++){ //any two sides have sum > third 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