मान लीजिए कि हम 2D समतल में दो आयताकार आयतों द्वारा कवर किए गए कुल क्षेत्रफल को ज्ञात करना चाहते हैं। यहाँ प्रत्येक आयत को उसके निचले बाएँ कोने और ऊपरी दाएँ कोने से परिभाषित किया गया है जैसा कि चित्र में दिखाया गया है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अगर सी =ई या ए>=जी या बी>=एच या डी <=एफ, तो
-
वापसी (सी - ए) * (डी - बी) + (जी - ई) * (एच - एफ)
-
-
एक सरणी h परिभाषित करें, A, C, E, G को h में डालें
-
एक सरणी v परिभाषित करें, B, D, F, H को v में डालें
-
एच ऐरे को सॉर्ट करें और वी ऐरे को सॉर्ट करें
-
अस्थायी:=(एच[2] - एच[1]) * (वी[2] - वी[1])पी>
-
कुल:=अस्थायी
-
कुल:=कुल + (सी - ए) * (डी - बी)
-
कुल :=कुल + (जी-ई) * (एच-एफ)
-
कुल वापसी
उदाहरण(C++)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { if(C <= E || A >= G || B >= H || D <= F) return (C - A) * (D - B) + (G - E) * (H - F); vector <int> h; h.push_back(A); h.push_back(C); h.push_back(E); h.push_back(G); vector <int> v; v.push_back(B); v.push_back(D); v.push_back(F); v.push_back(H); sort(h.begin(), h.end()); sort(v.begin(), v.end()); long long int temp = (h[2] - h[1]) * (v[2] - v[1]); long long int total = - temp; total += (C - A) * (D - B); total += (G - E) * (H - F); return total; } }; main(){ Solution ob; cout << (ob.computeArea(-3, 0, 3, 4, 0, -1, 9, 2)); }
इनपुट
-3 0 3 4 0 -1 9 2
आउटपुट
45