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

更新於: 2021年10月23日

291 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告