经典算法之果园里的树

果园里的树排列成矩阵,他们的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;
 } 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值