面試題:
平面上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作為實驗室中乙個細心觀察生活中點點滴滴的人,她很快就發現了實驗室中某些人的...