#include <bits/stdc++.h> using namespace std; int n; int x[1005], y[1005]; int b1, b2; int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> x[i]; } for (int i = 0; i < n; i++) { cin >> y[i]; } // y=kx+b -> y-kx=b -> k=1/-1 -> y-x=b/y+x=b 所以若b相同,则为一条直线 // 枚举计算每点的b int ans = 0; for (int i = 0; i < n; i++) { b1 = y[i] - x[i]; // k=1 以i点计算的b作为此时正在枚举的k=1的直线 for (int j = 0; j < n; j++) { b2 = y[j] + x[j]; // k=-1 以j点计算的b作为此时正在枚举的k=-1的直线 int num = 0; for (int z = 0; z < n; z++)//遍历所有点,若b=b1/b2,则在所选的直线上 { if (y[z] - x[z] == b1 || y[z] + x[z] == b2) { num++; } } ans = max(ans, num); } } cout << ans; }
18951 两条斜线跟此题一样