代码如下
因为可能既可能为凸四边形也可能为凹四边形,所以不用叉乘,而是用海伦公式计算面积暴力解法,此题还可以定义函数或者define。
#include
#include
int main()
{
double x1,y1,x2,y2,x3,y3,x4,y4,x,y;
int n,t,i=0;
int m[20000];
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
getchar();
scanf("%d",&n);
getchar();
t=n;
double a,b,c,d,e,p1,p2,p3,p4,p5,p6,s1,s2,s3,s4,s5,s;
double a1,b1,c1,d1;
a=sqrt((x1-x2)*(x1-x2)+pow(y1-y2,2));
b=sqrt((x2-x3)*(x2-x3)+pow(y2-y3,2));
c=sqrt((x3-x4)*(x3-x4)+pow(y3-y4,2));
d=sqrt((x1-x4)*(x1-x4)+pow(y1-y4,2));
e=sqrt(pow(x1-x3,2)+pow(y1-y3,2));
p1=(a+b+e)*1.0/2;
p2=(c+d+e)*1.0/2;
s1=sqrt(p1*(p1-a)*(p1-b)*(p1-e))+sqrt(p2*(p2-c)*(p2-d)*(p2-e));
while(t>0)
{
scanf("%lf%lf",&x,&y);
a1=sqrt(pow(x-x1,2)+pow(y-y1,2));
b1=sqrt(pow(x-x2,2)+pow(y-y2,2));
c1=sqrt(pow(x-x3,2)+pow(y-y3,2));
d1=sqrt(pow(x-x4,2)+pow(y-y4,2));
p3=(a+a1+b1)*1.0/2;
p4=(b+c1+b1)*1.0/2;
p5=(c+d1+c1)*1.0/2;
p6=(d+a1+d1)*1.0/2;
s2=sqrt(p3*(p3-a)*(p3-a1)*(p3-b1));
s3=sqrt(p4*(p4-b)*(p4-c1)*(p4-b1));
s4=sqrt(p5*(p5-c)*(p5-d1)*(p5-c1));
s5=sqrt(p6*(p6-d)*(p6-a1)*(p6-d1));
s=s2+s3+s4+s5;
if(s==s1||s2==0||s3==0||s4==0||s5==0)
m[i]=1;
else
m[i]=0;
i++;
t--;
}
for(i=0;i
if(m[i]==1)
printf("YESn");
else
printf("NOn");
}
return 0;
}



