zoukankan      html  css  js  c++  java
  • 点集最大共线问题

    点集最大共线问题

     问题:2D空间里有N个点,设计一个算法,求出此空间内最多有多少个点共线。

     解法一:依次取2个点,确定一条直线,然后依次检测剩下的点是否在当前线段(叉积为零则在一直线上)。O(n^3)。

     解法二:依次取1个点,统计出此点所有直线的等值斜率的个数。如果用Hash统计,则花费O(n^2)。

    扩展

     原题地址:http://star.baidu.com/forum/forum.php?mod=viewthread&tid=1652

     问题抽象:2D空间里有N个点,设计一个算法,求出此空间内最多有多少个点在同一抛物线(y=ax^2+bx)。 

     解题思路
      令z=y/x,则z=y/x=(ax^2+bx)/x=ax+b,
      以此进行左边变换:(x,y) -> (x,z)=(x,y/x),知道:
      若(x1,y1)、(x2,y2)、(x3,y3)位于同一条经过原点的抛物线上,则(x1,z1) (x2,z2) (x3,z3)三点共线

      于是:问题转换成了找点集(xi,zi)内最多多少个共线。经典问题,枚举俩然后hash判断。

  • 相关阅读:
    css 如何隐藏滚动条
    点击元素之外隐藏
    css3 box-shadow
    video常用功能
    input依次输入密码
    响应式布局基础
    数据库
    面试题
    pandas
    Numpy
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3238224.html
Copyright © 2011-2022 走看看