题目
在二维平面上,有一些点,请找出经过点数最多的那条线。
给定一个点集vectorp和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vector,代表经过点数最多的那条直线的斜率和截距。
解法
蛮力法。。
public class DenseLine {
public double[] getLine(Point[] p, int n) {
// write code here
double[] v = new double[2];
int max = 0,count = 0;
for(int i = 0;i < n;i++){
for(int j = i + 1;j < n;j++){
double k = (p[j].y - p[i].y)/(p[j].x - p[i].x);
double b = p[j].y - p[j].x * k;
count = 0;
for(int z = 0;z < n;z++){
if(z == i||z == j){
continue;
}
if(p[z].y == (p[z].x * k + b)){
count++;
}
}
if(count > max){
max = count;
v[0] = k;
v[1] = b;
}
}
}
return v;
}
}