www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號(hào)精選 > 嵌入式客棧
[導(dǎo)讀]看膩了認(rèn)知雞湯,你一無所獲,味同嚼蠟?看累了萬字長文,你收藏了事,心事重重?那么,歡迎來到濤哥公眾號(hào),我們一起,上點(diǎn)算法小菜,斟點(diǎn)程序小酒,品味一下短小的趣味算法和程序,別有一番風(fēng)味。面試題目在本文中,我們要討論的問題,小學(xué)生都可以看懂,卻出現(xiàn)在程序員的面試中,是我當(dāng)時(shí)應(yīng)聘一家游...

看膩了認(rèn)知雞湯,你一無所獲,味同嚼蠟?看累了萬字長文,你收藏了事,心事重重?

那么,歡迎來到濤哥公眾號(hào),我們一起,上點(diǎn)算法小菜,斟點(diǎn)程序小酒,品味一下短小的趣味算法和程序,別有一番風(fēng)味。

面試題目

在本文中,我們要討論的問題,小學(xué)生都可以看懂,卻出現(xiàn)在程序員的面試中,是我當(dāng)時(shí)應(yīng)聘一家游戲公司時(shí)遇到的問題,具體題目如下

如何判斷三點(diǎn)共線?

多么簡單直白的題目,可要答好也并不容易。在面試時(shí),我們要揚(yáng)長避短,在自己熟悉的問題上,可以主動(dòng)引導(dǎo)深入交流。

遇到多種方法時(shí),可采取循序漸進(jìn)、逐步優(yōu)化的方式進(jìn)行介紹,這樣也能給面試官留下很好的印象:條理清晰、思路開闊、輕重合理、善于優(yōu)化。

這么簡單的題目,我們?cè)撊绾沃帜??本文不是為了把答案給大家,而是跟大家一起,來探討處理問題的自然思路。


初中解法

最容易想到的,肯定是初中解法,即采用斜率的方式進(jìn)行判斷,比如:

K(AB) =?K(AC)

即AB的斜率等于AC的斜率。知道了A、B、C的坐標(biāo),求斜率很簡單吧。然而,這個(gè)方法有個(gè)漏洞,因?yàn)楫?dāng)AB垂直于X軸時(shí),斜率不存在(無窮大),所以,需要處理這種邊界情況。


高中解法

如果你連斜率都忘記了,那我挺無語的。但是,也別著急,用面積法也可以,如果三角形ABC的面積為0,則三點(diǎn)共線,即

S(ABC) = 0

那么,已知三點(diǎn)坐標(biāo),如何計(jì)算三角形面試呢?顯然,海倫公式就可以搞定。只要高中不是特別貪玩,肯定用余弦定理證明過海倫公式,我來推導(dǎo)一下:


大學(xué)解法

如果你既忘記了斜率,又忘記了海倫公式,那我覺得是不太應(yīng)該的。估計(jì)三角形面積的行列式公式,也應(yīng)該也忘記了吧,如下:

注意:內(nèi)層黑色豎線是行列式,外層紅色豎線是絕對(duì)值。


小學(xué)解法

如果你忘記了上面的所有方法,那怎么辦呢。別多說了,這是在面試,還是要解決問題,那就現(xiàn)場來解決吧。

我們?cè)谛W(xué)就知道,兩點(diǎn)之間,直線段最短,所以,如果滿足如下條件之一,那也可以表明三點(diǎn)共線:

AB ?BC = AC

AB ?AC = BC

AC BC =?AB

這個(gè)是小學(xué)生就知道的方法,雖說是小學(xué)生解法,但求距離,還是要用初中知識(shí)的,說白了,就勾股定理。


具體編程

搞清了算法之后,具體編程就很簡單了,我們以最后的一種方法為例,來寫個(gè)簡單程序吧:

#include #include using namespace std;
struct Point{ float x; float y;};
float square(float x) { return x * x;}
float getSide(const Point
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉