N個點求最大斜率

2022-05-04 16:42:09 字數 833 閱讀 9158

面試題:

平面上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)。

先把這些點按x座標從小到大排序,斜率最大的兩點必然是挨一起的兩個點,所以排序o(n* lg n),遍歷一次o(n)就夠了。

**:

#include #include 

#include

#include

using

namespace

std;

class

point

public

:

float

x;

float

y; };

bool less_first(const point &pt1, const point &pt2)

void printpts(const vectorpts)

}float findmaxk(const vector&pts, int &index)

}return

maxk;

}intmain()

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

平面上n個點,每兩個點都確定一條直線,求出斜率最大的那條直線所通過的兩個點 斜率不存在的情況不考慮 時間效率越高越好。關於這道題,網上已經給出了解答要點 3個點a,b,c,把它們的按x座標排序。假設排序後的順序是abc,那麼有兩種情況 1.abc共線,則k ab k bc k ac 2.abc不共線...

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

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

(幾何)n個點中找4個點求能組成正方形的最大面積

在2019年3月底的團體程式設計天梯賽後,16級隊員正式退役了,有的隊員迅速找到了乙份滿意而體面的工作,有的隊員估摸一算發現自己好像能保研了,還有一些隊員則是在考研的道路上一往無前所向披靡,而有的隊員懵在原地,不知所措。wys作為實驗室中乙個細心觀察生活中點點滴滴的人,她很快就發現了實驗室中某些人的...