Python程式:計算兩個矩形覆蓋的總面積
假設我們想要找到二維平面中兩個直線矩形覆蓋的總面積。這裡每個矩形由其左下角和右上角定義,如圖所示。
為了解決這個問題,我們將遵循以下步驟:
- width_1 := |C-A|,height_1 := |D-B|
- width_2 := |G-E|,height_2 := |H-F|
- area := width_1*height_1 + width_2*height_2
- 如果 (G<A) 或 (E>C) 或 (F>D) 或 (H<B),則
- 返回 area
- 否則,
- p := A 和 E 的最大值
- q := B 和 F 的最大值
- r := C 和 G 的最小值
- s := D 和 H 的最小值
- width_3 := |r-p|
- height_3 := |s-q|
- 返回 area - (width_3*height_3)
示例
讓我們看看下面的實現來更好地理解:
def solve(A, B, C, D, E, F, G, H): width_1 = abs(C-A) height_1 = abs(D-B) width_2 = abs(G-E) height_2 = abs(H-F) area = width_1*height_1 + width_2*height_2 if (G<A) or (E>C) or (F>D) or (H<B): return area else: p = max(A,E) q = max(B,F) r = min(C,G) s = min(D,H) width_3 = abs(r-p) height_3 = abs(s-q) return area - (width_3*height_3) A = -3 B = 0 C = 3 D = 4 E = 0 F = -1 G = 9 H = 2 print(solve(A, B, C, D, E, F, G, H))
輸入
-3, 0, 3, 4, 0, -1, 9, 2
輸出
45
廣告