pku 1118 Lining Up

来源:互联网 发布:mac版下载视频软件 编辑:程序博客网 时间:2024/04/27 18:52

题意:给出的数据为x y坐标上的点,求最多有多少个点在同一直线上。

解法:暴力o3次方,求斜率的时候,可以不除转换到相乘相等。

代码:

#include <stdio.h>
typedef struct
{
 int x;
 int y;
}Point;
Point p[710];
int main()
{
 int number,i;
 while(scanf("%d",&number) && number)
 {
  for(i = 0;i < number;i ++)
   scanf("%d%d",&p[i].x,&p[i].y);
  int max = 0;
  int count = 2;
  int j ,k;
  for(i = 0;i < number - 2;i ++)
  {
   for(j = i + 1;j < number - 1;j ++)
   {
    count = 2;
   for(k = j + 1;k < number;k ++)
   {
    int num = (p[i].y - p[j].y) * (p[j].x - p[k].x);//斜率相等的转换为乘 不用除。
    int num1 = (p[j].y - p[k].y) * (p[i].x - p[j].x);//
    if(num == num1)
     count ++;
   } 
   if(max < count)
    max = count;
   }
  }
  printf("%d/n",max);
 }
 return 0 ;
}