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

दिए गए निर्देशांक सेट से न्यूनतम क्षेत्रफल का आयत खोजें C++ में

मान लीजिए हमारे पास XY तल में कुछ बिंदुओं का एक ऐरे है। हमें इन बिंदुओं से बनने वाले न्यूनतम क्षेत्रफल के आयत को खोजना है। आयत की भुजा X और Y अक्षों के समानांतर होनी चाहिए। यदि हम आयत नहीं बना सकते, तो 0 वापस करें। तो यदि बिंदुओं का ऐरे [(1, 1), (1, 3), (3, 1), (3, 3), (2, 2)] जैसा है। आउटपुट 4 होगा। क्योंकि आयत बिंदुओं (1, 1), (1, 3), (3, 1) और (3, 3) का उपयोग करके बनाया जा सकता है।

इसे हल करने के लिए, बिंदुओं को x निर्देशांक द्वारा दें, ताकि सीधी ऊर्ध्वाधर रेखाओं पर बिंदु एक साथ समूहित हों। फिर समूह में बिंदुओं के प्रत्येक जोड़े जैसे (x, y1) और (x, y2) के लिए हम इस जोड़ी के साथ बनने वाले सबसे छोटे आयत को खोजेंगे, जो बनने वाले आयत का सबसे दाहिना किनारा होगा। हम इसे पहले देखे गए बिंदुओं के सभी अन्य जोड़े का ट्रैक रखकर कर सकते हैं। अंत में प्राप्त न्यूनतम संभव आयत क्षेत्रफल वापस करें।

उदाहरण

import collections
def findMinArea(Arr):
    columns = collections.defaultdict(list)
    for x, y in Arr:
        columns[x].append(y)
    lastx = {}
    ans = float('inf')
    for x in sorted(columns):
        col = columns[x]
        col.sort()
        for j, y2 in enumerate(col):
            for i in range(j):
                y1 = col[i]
                if (y1, y2) in lastx:
                    ans = min(ans, (x - lastx[y1, y2]) * (y2 - y1))
                lastx[y1, y2] = x
    if ans < float('inf'):
        return ans
    else:
        return 0

A = [[1, 1], [1, 3], [3, 1], [3, 3], [2, 2]]
print('Minimum area of rectangle:', findMinArea(A))

आउटपुट

Minimum area of rectangle: 4

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

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

  1. C++ में दिए गए बिंदुओं के समुच्चय के लिए सरल बंद पथ ढूंढना C++ में दिए गए बिंदुओं के समुच्चय के लिए सरल बंद पथ ढूंढना

    मान लीजिए हमारे पास बिंदुओं का एक समुच्चय है। हमें उन सभी बिंदुओं को कवर करने वाला एक सरल बंद पथ ढूंढना है। मान लीजिए बिंदु नीचे जैसे हैं, और अगली छवि उन बिंदुओं पर एक बंद पथ बना रही है।पथ प्राप्त करने के लिए, हमें इन चरणों का पालन करना होगा -नीचे-बाएं बिंदु को P के रूप में ढूंढेंअन्य n-1 बिंदुओं को

  1. C++ में मध्य बिंदुओं का उपयोग करके आयत के कोने ढूंढना C++ में मध्य बिंदुओं का उपयोग करके आयत के कोने ढूंढना

    मान लीजिए हमारे पास एक आयत ABCD है, लेकिन हमारे पास केवल मध्य बिंदुओं P और Q के निर्देशांक हैं, और आयत की लंबाई L है।हमारा कार्य P और Q के निर्देशांक, और भुजा की लंबाई L का उपयोग करके A, B, C और D के निर्देशांक ढूंढना है। उदाहरण के लिए, यदि P (1, 0) है, और Q (1, 2) है, और L 2 है, तो A, B, C, D क्रमश