/*
任取1点,计算出其他点到该点斜率,斜率相同的点必然在一条直线上。
枚举n 斜率排序nlgn
时间复杂度n^2lgn
*/
#include <cstring>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAX = 705;
const int INF = 1<<30;
int X[MAX];
int Y[MAX];
int n;
double d[MAX];
int k;
void solve()
{
int result = 1;
for(int i=0; i<n-1; i++) {
k = 0;
for(int j=i+1; j<n; j++) {
double dx = X[j] - X[i];
double dy = Y[j] - Y[i];
if(dx == 0) {
d[k] = INF; //极角为90°
} else {
d[k] = dy/dx;
}
k++;
}
sort(d, d+k);
int cnt = 1;
for(int j=1; j<k; j++) {
if(abs(d[j] - d[j-1]) < 1e-6) {
cnt++;
if(cnt > result) result = cnt;
}
else cnt=1;
}
}
printf("%d\n", result+1);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif
int T;
scanf("%d\n", &T);
char buff[20];
while(T--) {
n = 0;
while(gets(buff)) {
if(buff[0] == '\0') break;
sscanf(buff, "%d%d", &X[n], &Y[n]);
n++;
}
solve();
if(T>0) printf("\n");
}
return 0;
}
UVa 270 - Lining Up
最新推荐文章于 2017-08-04 21:57:00 发布