果园里的树排列成矩阵,他们的x和y坐标。输入若干个三角形,依次统计每一个三角形内部和边界上共有多少棵树。
用到的函数:
double area2(double x0,double y0,double x1,double y1,double x2,double y2)
{
return x0*y1+x2*y0+x1*y2-x2*y1-x0*y2-x1*y0;
}//即三角形有向面积的两倍。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//三角形有向面积的两倍
double area2(double x0,double y0,double x1,double y1,double x2,double y2)
{
return x0*y1 + x2*y0 + x1*y2 - x2*y1 - x0*y2 - x1*y0;
}
int main()
{
int count=0,x,y;
double a_x,a_y,b_x,b_y,c_x,c_y;
scanf("%lf %lf %lf %lf %lf %lf",&a_x,&a_y,&b_x,&b_y,&c_x,&c_y);
for(int i=1;i<100;++i)
for(int j=1;j<100;++j)
{
x=i;
y=j;
double s1,s2,s3;
/*注意!!!*/
s1=fabs(area2(a_x,a_y,b_x,b_y,x,y));
s2=fabs(area2(x,y,b_x,b_y,c_x,c_y));
s3=fabs(area2( a_x,a_y,x,y,c_x,c_y));
double s=fabs(area2(a_x,a_y,b_x,b_y,c_x,c_y));
if(fabs(s-s1-s2-s3)<=1e-9)
count++;
}
printf("%d\n",count);
return 0;
}