一個2D平面內有若干個點,找一條直線使之穿過的點數最多,求最多穿過的點數。
首先,我們先從一般情況考慮,假設我們當前直線已經穿過一個點map[x - a / y - b]穿過點數的映射即可。
那么,我們這道題只需要枚舉直線穿過的點,然后再遍歷剩下的點求斜率并且統計就好。
在求斜率的時候,假設我們當前直線起點為
假設我們斜率double型的k轉換成一個無精度損失的表示方法,因為pair<int, int>的(x', y')。
所以,我們將分子分母同除最大公約數即可。
注意:
重復點斜率為無窮大的點。新聞熱點
疑難解答