Advertisement

计算数据集中最大共线点数

阅读量:

日前,一名硕士研究生参与某企业的面试,所面临的问题如下:

在一组已知坐标(x,y)的点中,如何找出位于同一直线上的点数量最多的那条直线。编程语言不限。

该同学尝试了多种方法,其中一些思路较为基础,例如遍历法,但实际操作起来却存在较大难度。

我的思考过程如下:(1)任意两点可确定一条直线;

(2)每条直线可以通过三个参数进行唯一标识。

例如:y=ax+b;同时考虑到特殊情况,如直线与x轴垂直的情况,则引入一个参数v;

当v=1时代表该直线与x轴垂直,即两个点的横坐标相同;否则v=0。

通过这种方式,任意两个点所确定的直线可以用三个参数进行唯一表示,并可使用向量(a,b,v)来表达。

如图所示:

复制代码
 <span style="font-size:18px;">#include <iostream>

    
  
    
 using namespace std;
    
  
    
 #include <math.h>
    
  
    
 #define Error 1e-5
    
 /******************************

全部评论 (0)

还没有任何评论哟~