【暑期基础3】D HDU 2056 Rectangles (几何)

题意

给出 4 个点的坐标,前两个点是第一个矩形的一条对角线上的两个点,后两个点是另一个矩形的一条对角线上的两个点。求出两个矩形的相交部分面积。


思路

(1)矩形的一条对角线上的两个点,统一化为左下角和右上角;
(2)判断两个矩形是否相交;
(3)求相交部分面积(有可能为 0)。


AC 代码 *

#include 

int main() {
    double  x1, y1, x2, y2, x3, y3, x4, y4, t;
    while( scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4) != EOF ) {
        if ( x1 > x2 ) { t = x1; x1 = x2; x2 = t; }
        if ( y1 > y2 ) { t = y1; y1 = y2; y2 = t; }
        if ( x3 > x4 ) { t = x3; x3 = x4; x4 = t; }
        if ( y3 > y4 ) { t = y3; y3 = y4; y4 = t; }

        x1 = x1 > x3 ? x1 : x3;
        x2 = x2 > x4 ? x4 : x2; 
        y1 = y1 > y3 ? y1 : y3;
        y2 = y2 > y4 ? y4 : y2;

        printf("%.2lf\n", x1 > x2 || y1 > y2 ? 0 : (x2 - x1) * (y2 - y1));
    }
    return 0;
}

* 注:在 HUST 的 Virtual Judge 上测试 AC

你可能感兴趣的:(c语言,水题练习)