hdu 2056 Rectangles

来源:互联网 发布:python解析日志文件 编辑:程序博客网 时间:2024/06/04 23:29

题目

这道题大一上学期的时候也做过,但是那个时候没有做出来,今天又看了一遍。 

这主要是个数学问题。


刚开始想到分为这么几种情况,觉得好复杂啊,转念一想

只要(x4<x1)或者(y4<y1)或者(x3>x2)或者(y3>y2),就一定不能重合

最后得到的代码如下:

#include <stdio.h>double min(double x1,double x2){    if(x1<x2)        return x1;    else        return x2;}double max(float x1,double x2){    if(x1>x2)        return x1;    else        return x2;}void change(double *a ,double *b){double temp;temp = *a;*a = *b;*b = temp;}int main(){    double x1,x2,x3,x4,y1,y2,y3,y4,s;    while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4))    {if(x1>x2) change(&x1,&x2);if(x3>x4) change(&x3,&x4);if(y1>y2) change(&y1,&y2);if(y3>y4) change(&y3,&y4);        if((x4>x1)&&(y4>y1)&&(x3<x2)&&(y3<y2))        {            s=(min(x2,x4)-max(x1,x3))*(min(y2,y4)-max(y1,y3));            printf("%.2lf\n",s);        }        else            printf("0.00\n");                    }    return 0;}

但是,最开始忘了考虑这个了,所以交了好几次都WA,因为只考虑到,矩形在第一象限,倘若在第二象限是负数就错了。。。

原创粉丝点击