首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

HDU 2056 Rectangles:矩形相交面積計算幾何基礎題

     編輯:C++ 入門

題目大意

給定兩矩形對角頂點坐標,求相交面積。多組輸入直到 EOF。

解法步驟

  1. **統一頂點**:將每個矩形轉為左下角 (x1,y1) 和右上角 (x2,y2),即 `x1=min(x1,x2)`, `y1=min(y1,y2)`, `x2=max(x1,x2)`, `y2=max(y1,y2)`
  2. **相交矩形坐標**:
    `X1 = max(x1, x3)`
    `Y1 = max(y1, y3)`
    `X2 = min(x2, x4)`
    `Y2 = min(y2, y4)`
  3. **面積計算**:若 `X1 < X2 && Y1 < Y2`,面積 = `(X2-X1)*(Y2-Y1)`;否則面積 = 0(不相交或僅邊界接觸)

代碼簡潔版


while (cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4) {
    if (x1 > x2) swap(x1,x2); if (y1 > y2) swap(y1,y2);
    if (x3 > x4) swap(x3,x4); if (y3 > y4) swap(y3,y4);
    double X1 = max(x1,x3), Y1 = max(y1,y3);
    double X2 = min(x2,x4), Y2 = min(y2,y4);
    double area = (X1 < X2 && Y1 < Y2) ? (X2-X1)*(Y2-Y1) : 0;
    printf("%.2lf\n", area);
}

注意事項

  • 坐標為實數,用 `double`
  • 輸出保留兩位小數
  • 邊界接觸面積為 0
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved