【穷举】Max Points on a Line平面上共线的点
2018-06-12 本文已影响0人
安琪拉的小迷妹
穷举的细节好多,之前做笔试题的时候,穷举题几乎没有全部AC的,好多细节考虑不到。。。。
题目:
找到平面上在一条直线上最多的点。如下例所示:
解题:
思路是这样的:从点1开始遍历,for i in range(len(point)-1),和for j in range(i+1,len(point)),计算point[i]和point[j]的斜率,为什么是i是到len-1呢,因为,最后一个数,后面没有了,倒数第二个数后面才有。注意:计算斜率的时候,要用分数的形式,求最大公约数然后化简,为啥呢,因为由于计算机精度的问题,小数会有误差。在遍历的时候注意,每次要把dic给清空,提取每次dic中的最大值,这一点很重要,注意啦注意啦!!!开始的时候没想到,想了半天才想到要清空,要不然都累加起来了,四个平行点,会给数成4+3+2个。还有一点需要注意的是,有可能有重复值,重复值就在每次遍历i的时候,加1就行,因为是以i为单位遍历的,重复值是对i的重复,直接加上面就行了。
对了还要注意一下,这个输入形式,是以class形式输入的