1008数星星这题为什么一直WA……真是找不出错误了,求大神解释啊
程序代码:
#include<stdio.h>
#include<math.h>
#define T 0.0000000001
int x[1010],y[1010];
double ans[1010];
int comp(const void *_a,const void *_b)
{
double *a=(double *)_a;
double *b=(double *)_b;
return *a>*b;
}
double xl(int x1,int y1,int x2,int y2) //算斜率
{
if(x1==x2) return 10000000.0;
else return (y1-y2)*1.0/(x1-x2);
}
int main()
{
int n,i,j,k,k1,k2,sum,max,count;
while(scanf("%d",&n)!=EOF)
{
if(n==0) {printf("0n");continue;}
if(n==1) {printf("1n");continue;}
max=0;
for(i=0;i<n;i++)
scanf("%d %d",&x[i],&y[i]);
for(i=0;i<n-max;i++) //枚举起点
{
count=0;
//if(n-i-1<=max) break; //如果剩余点数少于max,就直接跳出
for(j=i+1;j<n;j++) //枚举终点
{
ans[count++]=xl(x[i],y[i],x[j],y[j]); //ans数组记录以i为起点的斜率
qsort(ans,count,sizeof(double),comp);
sum=1;
for(k=0;k<count-1;k++)
{
if(fabs(ans[k]-ans[k+1])<T)
{
sum++;
if(sum>max) max=sum; //记录最大值
}
else sum=1;
}
}
}
printf("%dn",max+1); //点数等于线段数+1
}
return 0;
}