果园里的树

来源:互联网 发布:mac死机自动重启 编辑:程序博客网 时间:2024/04/19 16:02

果园里的树排列成矩阵。它们的xy坐标均是1~99的整数。输入若干个三角形,依次统计每一个三角形内部和边界上共有多少棵树?

样例输入

1.5 1.5 1.5 6.8 6.8 1.5

10.7 6.9 8.5 1.5 14.5 1.5

样例输出

15

17

分析

利用了三角形的有向面积(详见http://blog.csdn.net/wingrez/article/details/75042006

参考代码

#include<stdio.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(){double x0,y0,x1,y1,x2,y2;while(scanf("%lf%lf%lf%lf%lf%lf",&x0,&y0,&x1,&y1,&x2,&y2)==6){double s0=fabs(area2(x0,y0,x1,y1,x2,y2));int count=0;int i,j;for(i=1;i<=99;i++){for(j=1;j<=99;j++){double s1=fabs(area2(i*1.0,j*1.0,x0,y0,x1,y1)),s2=fabs(area2(i*1.0,j*1.0,x1,y1,x2,y2)),s3=fabs(area2(i*1.0,j*1.0,x2,y2,x0,y0));if(fabs(s0-s1-s2-s3)<1e-9)count++;}}printf("%d\n",count);}return 0;}