hdu2056 Rectangles

来源:互联网 发布:手机淘宝怎样看退货率 编辑:程序博客网 时间:2024/04/29 00:09

题目大意:
输入两个矩形对角线上的两点坐标,输出两个矩形重叠面积。

大致思路:
水题中稍微难一点的类型。。。输入的两点不一定是主对角线上的。。。所以需要处理一下

C:

#include<stdio.h>struct point{    double x1,y1,x2,y2;};                      //用结构体是个好习惯double max(double a,double b){    return a>b?a:b;}                       //模仿dalao自己编写函数double min(double a,double b){    return a<b?a:b;}int main(){    struct point p1,p2;    double x1,y1,x2,y2;    //输入有点长,注意不要打错    while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p1.x1,&p1.y1,&p1.x2,&p1.y2,&p2.x1,&p2.y1,&p2.x2,&p2.y2)!=EOF)    {        x1=min(p1.x1,p1.x2);        y1=min(p1.y1,p1.y2);        x2=max(p1.x1,p1.x2);        y2=max(p1.y1,p1.y2);        p1.x1=x1,p1.y1=y1,p1.x2=x2,p1.y2=y2;        //处理为矩形左下和右上两点,下面同理        x1=min(p2.x1,p2.x2);        y1=min(p2.y1,p2.y2);        x2=max(p2.x1,p2.x2);        y2=max(p2.y1,p2.y2);        p2.x1=x1,p2.y1=y1,p2.x2=x2,p2.y2=y2;        x1=max(p1.x1,p2.x1);        x2=min(p1.x2,p2.x2);        y1=max(p1.y1,p2.y1);        y2=min(p1.y2,p2.y2);        /*判断两矩形是否相交,        要么是一个矩形x最大小于另一个矩形x最小        要么是一个矩形y最大小于另一个矩形y最小,        重叠的话,(x2-x1)*(y2-y1)即为面积*/        printf("%.2lf\n",(x1>=x2||y1>=y2)?0.00:(x2-x1)*(y2-y1));        //条件运算符是个缩短代码长度的好东西~    }    return 0;}
0 0
原创粉丝点击