WOJ1087-数星星

来源:互联网 发布:淘宝i7 7700k那么便宜 编辑:程序博客网 时间:2024/05/21 08:00

一天,小希坐在院子里数星星,Gardon就出了个难题给她,让她数数天上的星星最多有多少个是在同一条直线上的。天上的星星太多了,小希马上就看花了眼,你能写个程序来帮她计算么?

输入格式

输入包含多组数据,每组数据的开头是一个整数N(N<=300),接下来的N对数每对表示一个星星的位置(星星的坐标在-10000到10000之间,精确到小数点后1位)。没有两个星星会在同一个位置。

输出格式

一个整数,表示一条直线上最多星星的数目。

样例输入

50 01 01 10 10.5 0.5

样例输出

3
暴力枚举

#include<cstdio>  #include<cstring>  #include<algorithm>  using namespace std;  struct P  {      float x,y;  }a[301];int main()  {      int n;      while(scanf("%d",&n)!=EOF&&n!=0)      {          for(int i=0;i<n;i++)              scanf("%f %f",&a[i].x,&a[i].y);          int ans=1;          for(int i=0;i<n;i++)          {              for(int j=i+1;j<n;j++)              {                  int sum=2;                  for(int k=j+1;k<n;k++)                  {                      if((a[i].x-a[j].x)*(a[j].y-a[k].y)==(a[j].x-a[k].x)*(a[i].y-a[j].y))                          sum++;                  }                  if(sum>ans) ans=sum;              }          }          printf("%d\n",ans);      }return 0;  } 

原创粉丝点击