给出直线段上的一组点。这些点可能位于线上的任何位置。我需要一个aglorithm来定期找到线上的最大点数。
例如在由y = 0表示的直线上,我可能有一些点,如:
[3,0], [1,0], [4,0], [7,0],[11,0], [10,0]
Output : 4
[1,0] , [4,0], [7,0], [10,0]
示例2:
[2,1], [2,5], [2,3], [2,7], [2,6]
Output: 4
[2,1], [2,3],[2,5], [2,7]
[注意:该线可能有任何斜率。我只需要算法的草图。这些点可以被认为存储在二维矩阵中] 请帮忙。
答案 0 :(得分:0)
这是伪代码中的暴力算法:
for each point X
for each point Y != X
find number of connected points from X using the distance between X and Y
next Y
next X
如何使用X和Y之间的距离从X中找到连接点的数量:
dXY = Y - X
i = 0
while point_exists(X + i * dXY)
i = i + 1
end while
答案 1 :(得分:0)
选择一个非零(或更宽)范围的坐标(例如第一个示例中的X),并按此坐标对您的集合进行排序。然后找到最长算术级数