Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
题意:
在二维平面上给定n个坐标点,找落在同一条直线上点的个数,并找出落在同一直线上点最多的个数。
思路:
首先注意:
1 | 1)如果点的个数小于3个,则最大数目为点的个数; |
容易出错的地方:
1 | 1)只考虑横坐标相等或纵坐标相等的情况,忽略斜率相等的情况,如{{0, 0}, {1, 1}, {-1, -1}}; |
主要思路:选定一个点,分别计算其他点和它构成的直线的斜率,斜率相同的点肯定在同一条直线上。 计算斜率时,注意重合点和x值相同的两个点(数学上称斜率不存在,此时斜率用int的最大值表示)。
1 | struct Point |