हमें एक सरणी दी गई है जिसमें त्रिभुजों की भुजाओं की लंबाई है। लक्ष्य उस सरणी से किन्हीं तीन भुजाओं को लेकर बनाए जा सकने वाले संभावित त्रिभुजों की संख्या ढूंढना है।
हम इसे जांच करके करेंगे कि किन्हीं दो का योग हमेशा तीसरी भुजा से > है या नहीं। यदि हां तो ये तीन भुजाएं एक त्रिभुज बना सकती हैं। संभावित त्रिभुजों की गिनती बढ़ाते हैं।
आइए उदाहरणों से समझते हैं।
इनपुट - 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) त्रिभुज बना सकती हैं।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम यादृच्छिक धनात्मक संख्याओं से आरंभ एक पूर्णांक सरणी arr[] लेते हैं।
फंक्शन 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){ // त्रिभुजों की गिनती 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 << "संभावित त्रिभुजों की संख्या: "<< countTriangles(Arr, len); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
संभावित त्रिभुजों की संख्या: 8