您的位置:首页 > 其它

HDU 2056 Rectangles

2013-07-04 17:31 309 查看
第二次写的代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct node
{
double x,y;

};
bool cmpx (node a,node b)
{
return a.x<b.x;
}
bool cmpy (node a,node b)
{
return a.y<b.y;
}
int main()
{
int i,j;
node m[4];
while(cin>>m[0].x>>m[0].y>>m[1].x>>m[1].y>>m[2].x>>m[2].y>>m[3].x>>m[3].y)
{
sort(m,m+2,cmpx);
if((m[1].y-m[0].y)/(m[1].x-m[0].x)<0)
{
swap(m[1].y,m[0].y);
}
sort(m+2,m+4,cmpx);
if((m[3].y-m[2].y)/(m[3].x-m[2].x)<0)
{
swap(m[3].y,m[2].y);
}
//      cout<<m[0].y<<m[1].y<<m[2].y<<m[3].y;
double x1,x2,x3,x4,y1,y2,y3,y4;
x1=m[0].x; y1=m[0].y;
x2=m[1].x; y2=m[1].y;
x3=m[2].x; y3=m[2].y;
x4=m[3].x; y4=m[3].y;
sort(m,m+4,cmpx);
if(m[1].x!=x2&&m[1].x!=x4)
{
x1=m[1].x;x2=m[2].x;
sort(m,m+4,cmpy);
if(m[1].y!=y2&&m[1].y!=y4)
{
y1=m[1].y;y2=m[2].y;
printf("%.2lf\n",(y2-y1)*(x2-x1));
}
else cout<<"0.00"<<endl;
}
else cout<<"0.00"<<endl;
}
return 0;
}

第一次写的代码

#include<stdio.h>
#include<math.h>
int main()
{
double x1,y1,x2,y2,x3,y3,x4,y4;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF)
{
if(x1>x2){
x1=x1+x2;
x2=x1-x2;
x1=x1-x2;

}
if(y1>y2){
y1=y1+y2;
y2=y1-y2;
y1=y1-y2;
}
if(x3>x4){
x3=x3+x4;
x4=x3-x4;
x3=x3-x4;

}
if(y3>y4){
y3=y3+y4;
y4=y3-y4;
y3=y3-y4;
}
double maxy,maxx;
maxx=x1>x3?x1:x3;
maxy=y1>y3?y1:y3;

double minx,miny;
minx=x2<x4?x2:x4;
miny=y2<y4?y2:y4;
if(minx<=maxx||miny<=maxy)
printf("0.00\n");
else{
double s=fabs((miny-maxy))*fabs(minx-maxx);
printf("%.2f\n",s);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: