आयत के क्षेत्रफल की गणना उसकी भुजाओं के गुणनफल के रूप में की जाती है। सभी आयतों की चार भुजाएँ इस प्रकार होती हैं कि सम्मुख भुजाएँ बराबर होती हैं। क्षेत्रफल की गणना के लिए हमें दो भुजाओं के रूप में लंबाई और चौड़ाई की आवश्यकता होती है। ताकि हम वांछित परिणाम प्राप्त कर सकें -
क्षेत्रफल आयत =लंबाई X चौड़ाई
हमें एक सरणी इस प्रकार दी गई है कि इसमें एक आयत की भुजाएँ हों। सरणी में यादृच्छिक क्रम में सभी चार पक्षों के मान होते हैं। यहाँ कार्य आयत के लिए संभव अधिकतम क्षेत्रफल प्राप्त करने के लिए सरणी से पक्षों के दो उच्चतम युग्मों को खोजना है।
इनपुट
Arr[] = { 1,2,1,3,4,4,2,3,5,7 }.
आउटपुट − सरणी से चार भुजाओं को चुनकर अधिकतम क्षेत्रफल आयत -12
स्पष्टीकरण -यदि हम दिए गए सरणी को अवरोही क्रम में क्रमबद्ध करते हैं, तो हमें मिलता है,
Arr[]= { 7,5,4,4,3,3,2,1,1 }
पक्षों के दो जोड़े (कुल चार भुजाएँ) जो यहाँ अधिकतम हैं {(4,4),(3,3)} हैं। इसलिए वांछित अधिकतम संभव क्षेत्र 12 वर्ग इकाई है।
इनपुट
Arr[] = { 8,2,5,3,4,9,8,3,5,7 }.
आउटपुट - सरणी से चार भुजाओं को चुनकर अधिकतम क्षेत्रफल आयत - 40
स्पष्टीकरण -यदि हम दिए गए सरणी को अवरोही क्रम में क्रमबद्ध करते हैं, तो हमें मिलता है,
Arr[]= { 9,8,8,7,5,5,4,3,3,2 }
पक्षों के दो जोड़े (कुल चार भुजाएँ) जो यहाँ अधिकतम हैं {(8,8),(5,5)} हैं। इसलिए वांछित अधिकतम संभव क्षेत्र 40 वर्ग इकाई है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांकों की एक सरणी घोषित करें जिसमें आयत की भुजाओं के जोड़े हों।( Arr[] )
-
सरणी के आकार को संग्रहीत करने के लिए एक चर बनाएँ। (एन)
-
फ़ंक्शन maxArea(int arr[],int n) का उपयोग आयत के अधिकतम क्षेत्र की गणना के लिए किया जाता है। यह एक इनपुट ऐरे और उसके आकार को तर्कों के रूप में लेता है।
-
मैक्सएरिया () के अंदर हमने एक ऐरे डिम [2] घोषित किया है, दो स्टोर उच्चतम दो पक्षों को सॉर्ट किए गए सरणी (अवरोही क्रम में) एआर [] को पार करने के बाद मिला।
-
जैसा कि arr[] को अवरोही क्रम में क्रमबद्ध किया गया है, उच्चतम 4 पक्ष शुरुआत में होने चाहिए। हम arr[] को पुनरावृति करते हैं जैसे कि पक्षों की एक जोड़ी मिल जाती है।
-
डिम [] को पहले 0 से प्रारंभ करें।
-
जबकि लूप के अंदर हम शर्त रखते हैं कि यह j<2 तक जारी रहे कि dim[0] और dim[1] के लिए कोई मान नहीं मिला है या arr[] के अंत तक पहुंच गया है। (मैं<एन)।
-
यदि ऐसी भुजाओं का एक जोड़ा मिलता है, ( if(arr[i]==arr[i+1]) ), तो इसे dim[j] में संग्रहित करें और अगले पक्ष के लिए वृद्धि j करें।
-
परिणाम को dim[0] और dim[1] के गुणनफल के रूप में लौटाएं।
-
नोट - सॉर्ट (arr,n) गिरफ्तारी को अवरोही क्रम में सॉर्ट करना चाहिए।
उदाहरण
#include <iostream> using namespace std; // function for finding max area for rectangle int maxArea(int arr[], int n){ int dim[2]={0}; int i=0,j=0; while( j<2 && i<n){ if(arr[i]==arr[i+1]){ dim[j++]=arr[i]; } ++i; } return dim[0]*dim[1]; } // driver function int main(){ int arr[] = { 1,8,5,1,8,2,5,3 }; int n = 8; sort(arr,n); // supposed to sort array in descending order cout <<”Maximum area of rectangle by picking four sides from array:”<< maxArea(arr, n); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Maximum area of rectangle by picking four sides from array: 40