文章
68
粉丝
691
获赞
26
访问
582.1k
https://blog.csdn.net/csyifanZhang/article/details/106051633
↑完整题解
#define MAX 1005
#define inf 0x3fffff
#define ll double
#define vec vector
#define PA pair
struct P {
ll x, y;
}a[MAX];
int main() {
ll n;
while (cin >> n) {
map m;//记录已经出现过的直线
ll res = 0, cnt = 0;
for (int i = 0; i < n; i++)
cin >> a[i].x >> a[i].y;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
//两点确定一条直线
cnt = 0;
ll x = a[i].x - a[j].x, y = a[i].y - a[j].y;
if (m[PA(x, y)] == 1)continue;//已经统计过了
m[PA(x, y)] = m[PA(-x, -y)] = 1;
for (int k = 0; k < n; k++) {
ll tx = a[k].x - a[i].x, ty = a[k].y - a[i].y;
if (tx*y - ty * x == 0)cnt++;
}
if (cnt > res)res = cnt;
}
}
cout << res << endl;
}
}
登录后发布评论
暂无评论,来抢沙发