平面上N個點,求斜率最大的那條直線通過的兩點

2021-10-23 05:41:15 字數 907 閱讀 3526

平面上n個點,每兩個點都確定一條直線,求出斜率最大的那條直線所通過的兩個點(斜率不存在的情況不考慮)。時間效率越高越好。

關於這道題,網上已經給出了解答要點:

3個點a,b,c,把它們的按x座標排序。假設排序後的順序是abc,那麼有兩種情況:

1.abc共線,則k(ab)=k(bc)=k(ac)

2.abc不共線,則abc將形成乙個三角形,那麼k(ac)其中k()表示求斜率。

所以程式的基本步驟就是:

1.把n個點按x座標排序。

2.遍歷,求相鄰的兩個點的斜率,找最大值。

時間複雜度nlog(n)。

#include

#include

int cmp

(const

void

*a,const

void

*b)int main()

; int y[

100002]=

;scanf

("%d"

,&n)

;for

(i=0

;i)qsort

(x,n,

sizeof

(x[1])

,cmp)

; maxk=

(y[1

]-y[0]

)/(x[1

]-x[0]

);x1=x[0]

;x2=x[1]

;y1=y[0]

;y2=y[1]

;for

(i=0

;i1;i++)}

printf

("(%d,%d) (%d,&d)\n"

,x1,y1,x2,y2)

;return0;

}

N個點求最大斜率

面試題 平面上n個點,每兩個點都確定一條直線,求出斜率最大的那條直線所通過的兩個點 斜率不存在的情況不考慮 時間效率越高越好。分析 3個點a,b,c,把它們的按x座標排序。假設排序後的順序是abc,那麼有兩種情況 1.abc共線,則k ab k bc k ac 2.abc不共線,則abc將形成乙個三...

N個點求最大的四邊形面積

題意 平面上n個點 n 300 問任意四個點組成的四邊形 保證四條邊不相交 的最大面積是多少。分析 1 第一思路是列舉四個點,以o n4 的演算法妥妥超時。2 以下思路源自官方題解 以o n2 列舉每一條邊,以這條邊作為四邊形的對角線 注意 這裡所說的對角線是指把四邊形分成兩部分的線,不考慮凹四邊形...

已知屏面上不重合的三點,如何求平面法向量?

已知平面上不重合的三點o 0,0,0 a a1,a2,a3 b b1,b2,b3 那麼此三點所確定平面的法向量n x,y,z 中的x,y,z值分別是多少?謝謝!乙個平面應該有兩個方向上的法向量,aireds所給出的答案法向量是指向哪個方向的?任取其中兩點成為一條直線 oa向量 a1,a2,a3 ob...