| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
代码拙劣#include <stdio.h>
#include <math.h>
#define MAXNUM 1000
typedef struct Point{
int x;
int y;
}Point;
void change_origin(Point *set,int n,Point origin)
{
int i;
for(i=0;i<n;i++)
{
set[i].x-=origin.x;
set[i].y-=origin.y;
}
}
double cross(Point a,Point b)
{
return a.x*b.y-b.x*a.y;
}
int main()
{
Point set[MAXNUM];
Point origin;
int a,b,n,max,i,j;
double radius;
while(scanf("%d %d %lf",&origin.x,&origin.y,&radius))
{
if(radius<0)break;
scanf("%d",&n);
for(i=0,j=0;i<n;i++)//得到一个园内的点集,j代表点集个数
{
scanf("%d %d",&a,&b);
if( ((a-origin.x)*(a-origin.x)
+(b-origin.y)*(b-origin.y)-radius*radius)<=0 )
{
set[j].x=a,set[j].y=b;
j++;
}
}
n=j;
change_origin(set,j,origin);
max=0;
for(i=0;i<n;i++)
{
j=i+1;
a=1;
while((j-i)<n)
{
if(cross(set[i],set[j%n])>=0)a++;//这里a用来存储满足条件点的个数
j++;
}
max=max>a?max:a;
}
printf("%d\n",max);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator