输入一个整数n和n组坐标,判断做多几个点在同一条直线上,问了很多人都说用枚举,但这里感觉没必要枚举啊,直接算不就完了吗?如果真的不对能不能帮我改改代码?
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int count=1;
int x[1000],y[1000];
for(int i=1;i<=n;i++)
{
scanf("%d",&x[i]);
scanf("%d",&y[i]);
}
double k[1000];
//计算斜率
for(int i=1;i<=n;i++)
{
k[i]=(1.0*y[i])/(1.0*x[i]);
}
//选择排序
int min;
for(int i=1;i<n;i++)
{
min=i;
for(int j=i+1;j<=n;j++)
{
if(k[j]>k[min])
min=j;
}
if(min!=i)
{
double t;
t=k[min];
k[min]=k[i];
k[i]=t;
}
}
//寻找众数
int t=1;
for(int i=1;i<=n;i++)
{
if(k[i]==k[i+1])
{
count++;
if(count>t)
t=count;
}
else
{
count=1;
}
}
printf("%d",t);
return 0;
}
这个程序为什么不能算出最多几个点在一条直线上呢?