【窮舉】Max Points on a Line平面上共線的點

weixin_34214500發表於2018-06-12

窮舉的細節好多,之前做筆試題的時候,窮舉題幾乎沒有全部AC的,好多細節考慮不到。。。。

題目:

找到平面上在一條直線上最多的點。如下例所示:

12464670-0f86c193ce03001d.png

解題:

思路是這樣的:從點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的重複,直接加上面就行了。


12464670-55f80545fd5e506b.png
12464670-5696f4ee7ed63e7b.png

對了還要注意一下,這個輸入形式,是以class形式輸入的


12464670-880709dd9172772c.png

相關文章