Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में ऐरे से चार पक्ष चुनकर अधिकतम क्षेत्रफल वाला आयत


आयत का क्षेत्रफल उसकी भुजाओं के गुणनफल के रूप में गणना किया जाता है। सभी आयतों में चार भुजाएं होती हैं जिनमें विपरीत भुजाएं समान होती हैं। क्षेत्रफल की गणना के लिए हमें लंबाई और चौड़ाई के रूप में दो भुजाओं की आवश्यकता होती है। ताकि हम वांछित परिणाम प्राप्त कर सकें:

आयत का क्षेत्रफल = लंबाई × चौड़ाई

हमें एक ऐरे दिया गया है जिसमें आयत की भुजाएं होती हैं। ऐरे में चारों भुजाओं के मान रैंडम ऑर्डर में होते हैं। यहां कार्य ऐरे से भुजाओं के दो उच्चतम जोड़े ढूंढना है ताकि आयत के लिए अधिकतम संभव क्षेत्रफल प्राप्त किया जा सके।

इनपुट

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[])
  • ऐरे का आकार संग्रहीत करने के लिए एक वेरिएबल बनाएं (n)
  • फंक्शन maxArea(int arr[], int n) का उपयोग आयत के लिए अधिकतम क्षेत्रफल की गणना के लिए किया जाता है। यह इनपुट ऐरे और उसके आकार को आर्गुमेंट्स के रूप में लेता है।
  • maxArea() के अंदर हम एक ऐरे Dim[2] घोषित करते हैं जो सॉर्ट किए गए ऐरे (अवरोही क्रम में) arr[] को पार करने के बाद मिली दो उच्चतम भुजाओं को संग्रहीत करता है।
  • चूंकि arr[] अवरोही क्रम में सॉर्ट है, इसलिए उच्चतम 4 भुजाएं शुरुआत में होनी चाहिए। हम arr[] को इस तरह पार करते हैं कि भुजाओं का एक जोड़ा मिले।
  • Dim[] को पहले 0 से इनिशियलाइज़ करें।
  • व्हाइल लूप के अंदर हम शर्त रखते हैं कि यह तब तक जारी रहे जब तक j < 2 (यानी dim[0] और dim[1] के लिए कोई मान नहीं मिला) या arr[] का अंत नहीं पहुंच जाता (i < n)।
  • यदि भुजाओं का ऐसा जोड़ा मिलता है (if(arr[i] == arr[i+1])) तो इसे dim[j] में संग्रहीत करें और अगली भुजा के लिए j को बढ़ाएं।
  • परिणाम को dim[0] और dim[1] के गुणनफल के रूप में रिटर्न करें।
  • नोट - sort(arr, n) माना जाता है कि arr को अवरोही क्रम में सॉर्ट करता है।

उदाहरण

#include <iostream>
#include <algorithm>
using namespace std;

// आयत के लिए अधिकतम क्षेत्रफल खोजने का फंक्शन
int maxArea(int arr[], int n) {
    int dim[2] = {0};
    int i = 0, j = 0;
    // अवरोही क्रम में सॉर्ट करें
    sort(arr, arr + n, greater<int>());
    
    while (j < 2 && i < n - 1) {
        if (arr[i] == arr[i + 1]) {
            dim[j++] = arr[i];
            i += 2; // जोड़ा मिल गया, अगले जोड़े पर जाएं
        } else {
            ++i;
        }
    }
    return dim[0] * dim[1];
}

// ड्राइवर फंक्शन
int main() {
    int arr[] = { 1, 8, 5, 1, 8, 2, 5, 3 };
    int n = 8;
    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

  1. C++ में आयत क्षेत्रफल II (Rectangle Area II) - ओवरलैपिंग आयतों का कुल क्षेत्रफल C++ में आयत क्षेत्रफल II (Rectangle Area II) - ओवरलैपिंग आयतों का कुल क्षेत्रफल

    समस्या विवरण हमें अक्ष-संरेखित (axis-aligned) आयतों की एक सूची दी गई है। प्रत्येक आयत rectangle[i] = {x1, y1, x2, y2} द्वारा दर्शाया गया है, जहां (x1, y1) निचले-बाएं कोने का बिंदु है और (x2, y2) ऊपरी-दाएं कोने का बिंदु है। हमें तल (plane) में सभी आयतों द्वारा कवर किए गए कुल क्षेत्रफल को ज्ञात करना

  1. - C++ में दिए गए परिमाप से आयत का अधिकतम क्षेत्रफल

    समस्या विवरण एक आयत का परिमाप (perimeter) दिया गया है। उस परिमाप वाले आयत का अधिकतम संभव क्षेत्रफल (area) ज्ञात करना है। सूत्र परिमाप = 2 × (लंबाई + चौड़ाई) क्षेत्रफल = लंबाई × चौड़ाई दिए गए परिमाप के लिए, क्षेत्रफल अधिकतम तब होता है जब लंबाई और चौड़ाई यथासंभव बराबर हों (वर्ग के निकट)। लंबाई = c

  1. C++ में आयत क्षेत्रफल गणना C++ में आयत क्षेत्रफल गणना

    मान लीजिए हम 2D तल में दो समकोणीय आयतों द्वारा कवर किए गए कुल क्षेत्रफल को ढूंढना चाहते हैं। प्रत्येक आयत को उसके निचले बाएं कोने और ऊपरी दाएं कोने द्वारा परिभाषित किया जाता है।हल करने के चरण= H या D <= F, तो(C - A) * (D - B) + (G - E) * (H - F) वापस करेंएक सरणी h परिभाषित करें, इसमें A, C, E, G डाल