| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求助啊~大神来改错#include <iostream>
using namespace std;
typedef struct Point
{
double x,y;
}Point;
Point p[7],l[3];
double max(double a,double b)
{
return a>=b?a:b;
}
double min(double a,double b)
{
return a<=b?a:b;
}
double multi(Point p1,Point p2,Point p0)
{
return (p1.x - p0.x)*(p2.y - p0.y) - (p2.x - p0.x)*(p1.y - p0.y);
}
bool is_cross(Point p1,Point p2,Point p3,Point p4)
{ return max(p1.x,p2.x)>=min(p3.x,p4.x)
&& max(p3.x,p4.x)>=min(p1.x,p2.x)
&& max(p1.y,p2.y)>=min(p3.y,p4.y)
&& max(p3.y,p4.y)>=min(p1.y,p2.y)
&& multi(p3,p2,p1)*multi(p2,p4,p1)>=0
&& multi(p1,p4,p3)*multi(p4,p2,p3)>=0;
}
int main()
{
int n;
while(n--)
{
cin>>l[1].x>>l[1].y>>l[2].x>>l[2].y>>p[5].x>>p[5].y>>p[6].x>>p[6].y;
p[1].x=p[5].x<=p[6].x?p[5].x:p[6].x;
p[1].y=p[5].y>=p[6].y?p[5].y:p[6].y;
p[2].x=p[5].x>=p[6].x?p[5].x:p[6].x;
p[2].y=p[5].y<=p[6].y?p[5].x:p[6].y;
p[3].x=p[1].x;p[3].y=p[2].y;p[4].x=p[2].x;p[4].y=p[1].y;
if(is_cross(l[1],l[2],p[1],p[4])||is_cross(l[1],l[2],p[1],p[3])||
is_cross(l[1],l[2],p[2],p[3])||is_cross(l[1],l[2],p[4],p[2]))
cout<<"T"<<endl;
else if(l[1].x>=p[1].x&&l[1].x<=p[2].x&&l[2].x>=p[1].x&&l[2].x<=p[2].x&&
l[1].y>=p[1].y&&l[1].y<=p[2].y&&l[2].y>=p[1].y&&l[2].y<=p[2].y)
cout<<"T"<<endl;
else cout<<"F"<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator