数组与结构体的区别,poj 1118,求解
poj 1118,我用数组会编辑错误,但用结构体却ac了给出n个坐标,求最多有多少点在同一直线上。
代码如下
数组的
#include<stdio.h>
int main()
{
int n,i,j,k,max,p,x[n],y[n];
while(scanf("%d",&n)&&n!=0)
{
max=0;
for(i=0;i<n;i++)
scanf("%d%d",&x[i],&y[i]);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
p=0;
for(k=j+1;k<n;k++)
{
if ((y[i]-y[k])*(x[i]-x[j])==(y[i]-y[j])*(x[i]-x[k]))
p++;
}
if(p>max)
max=p;
}
printf("%d\n",max+2);
}
return 0;
}
结构体的
#include<stdio.h>
struct node
{
int x;
int y;
}point[701];
int main()
{
int n,i,j,k,max,p;
while(scanf("%d",&n)&&n!=0)
{
max=0;
for(i=0;i<n;i++)
scanf("%d%d",&point[i].x,&point[i].y);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
p=0;
for(k=j+1;k<n;k++)
{
if((point[i].x-point[j].x)*(point[i].y-point[k].y)==(point[i].x-point[k].x)*(point[i].y-point[j].y))
p++;
}
if(p>max)
max=p;
}
printf("%d\n",max+2);
}
return 0;
}
样例
5
1 1
2 2
3 3
9 10
10 11
0
输出
3