码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2056 Rectangles

时间:2015-01-12 21:08:17      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

这题就是简单的几何题,刚接触ACM做这题时,不会写,当时想的太复杂了,把矩形的各种情况组合都考虑到了,结果发现这样太复杂就放弃了。今天做这道题时,我突然发现既然题目给的是对角线的坐标,为什么不用对角线之间的关系来判别矩形之间的位置关系呢?于是思路就很简单的涌现出来了。只要画个图,就能明白两者之间对角线的关系。

#include<cstdio>
#include<cstring>
#include<algorithm>
double _max(double x,double y)
{
    if(x>y)
        return x;
    return y;
}
double _min(double x,double y)
{
    if(x<y)
        return x;
    return y;
}
using namespace std;
int main()
{
    double x1,y1,x2,y2,x3,y3,x4,y4,area;
    while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF)
    {
        double _x1=_min(x1,x2),_x2=_max(x1,x2),_y1=_min(y1,y2),_y2=_max(y1,y2);//分别求出矩形对角线两个点的x,y的最大最小值
        double _x3=_min(x3,x4),_x4=_max(x3,x4),_y3=_min(y3,y4),_y4=_max(y3,y4);
        x1=_max(_x1,_x3),x2=_min(_x2,_x4);//把两条对角线进行比较
        y1=_max(_y1,_y3),y2=_min(_y2,_y4);
        //printf("x1=%lf,x2=%lf,y1=%lf,y2=%lf\n",x1,x2,y1,y2);
        if(x1>x2||y1>y2)
            area=0.0;
        else
        {
            double a=x2-x1,b=y2-y1;
            area=a*b;
        }
        printf("%.2lf\n",area);
    }
    return 0;
}


HDU 2056 Rectangles

标签:

原文地址:http://blog.csdn.net/u013621213/article/details/42646201

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!