一个2D平面内有若干个点,找一条直线使之穿过的点数最多,求最多穿过的点数。
首先,我们先从一般情况考虑,假设我们当前直线已经穿过一个点map[x - a / y - b]
穿过点数的映射即可。
那么,我们这道题只需要枚举直线穿过的点,然后再遍历剩下的点求斜率并且统计就好。
在求斜率的时候,假设我们当前直线起点为
假设我们斜率double
型的k转换成一个无精度损失的表示方法,因为pair<int, int>
的(x', y')
。
所以,我们将分子分母同除最大公约数即可。
注意:
重复点斜率为无穷大的点。新闻热点
疑难解答