3689 - 果园里的树

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

果园里的树排列成矩阵,它们的坐标均是1-99的整数、输入若干个三角形,依次统计每一个三角形内部和边界上

共有多少棵树。

<span></span>

题目输入

X1 y1 x2 y2 x3 y3  坐标是范围(0-99,0-99)

题目输出

对于第i组数据输出

Case #i: 苹果棵树

输入/输出样例

输入格式

35.7 55.0 37.7 22.3 9.1 28.8

输出格式

Case #1: 461

C语言解答

#include<stdio.h>
#include<math.h>
#define MAX 1e-9
int h=1;
double area(double x1,double y1,double x2,double y2,double x3,double y3)
{
	return x1*y2+y1*x3+x2*y3-x1*y3-y1*x2-y2*x3;
}
int main()
{
	double x1,x2,x3,y1,y2,y3,s,s1,s2,s3;
  while(scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
{
	  int count=0;
	 for(int i=1;i<100;i++)
   {
		for(int j=1;j<100;j++)
		{
		    s=area(x1,y1,x2,y2,x3,y3);
		    s1=area(i,j,x1,y1,x2,y2);
		    s2=area(i,j,x2,y2,x3,y3);
		    s3=area(i,j,x3,y3,x1,y1);
		    if(s<0)   s=-s;
		    if(s1<0)  s1=-s1;
		    if(s2<0)  s2=-s2;
		    if(s3<0)  s3=-s3;
		    if(fabs(s-(s1+s2+s3))<=MAX)
		        count++;
		}
	}
	 printf("Case #%d:",h++);
	  printf(" %d\n",count);
}

	return 0;
}

C++解答

#include <stdio.h>
#include <math.h>
#define inf 1e-10

double area2(double x0,double y0,double x1,double y1,double x2,double y2)
{
    return fabs(x0*y1+x2*y0+x1*y2-x2*y1-x0*y2-x1*y0);
}

double min(double a,double b)
{
    return a<b?a:b;
}
double max(double a,double b)
{
    return a>b?a:b;
}
int main()
{
    int z=0;
    int i,j,count;
    double x0,x1,x2,y0,y1,y2,s0,s1,s2,s3;
    double minX,maxX,minY,maxY;
    while(scanf("%lf%lf%lf%lf%lf%lf",&x0,&y0,&x1,&y1,&x2,&y2)!=EOF)
    {
        minX=min(x0,min(x1,x2));minY=min(y0,min(y1,y2));
        maxX=max(x0,max(x1,x2));maxY=max(y0,max(y1,y2));
        count=0;
        for(i=minX;i<=maxX;i++)
            for(j=minY;j<=maxY;j++)
            {
                s0=area2(x0,y0,x1,y1,x2,y2);
                s1=area2(i,j,x0,y0,x1,y1);
                s2=area2(i,j,x1,y1,x2,y2);
                s3=area2(i,j,x2,y2,x0,y0);
                if(fabs(s0-s1-s2-s3)<inf)
                    count++;
            }
        printf("Case #%d: %d\n",++z,count);
    }
    return 0;
}