平面上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...