第二次實驗作業 演算法基本功 與 綜合思考

2021-06-22 10:34:45 字數 2125 閱讀 9857

(2)經典演算法面試題(至少選擇其中1道題並作答,有自己的思考與理解)

收集一些top軟體公司經典演算法面試題(有很多公司的經典面試題,可供選擇)

白話經典演算法序列(個人非常優秀的總結)

……有12個小球,外形相同,其中乙個小球的質量與其他11個不同,給乙個天平,問如何用3次把這個小球找出來,並且求出這個小球是比其他的輕還是重. 答:

將12個球分別編號為a1,a2,a3.......a10,a11,a12. 

第一步:將12球分開3撥,每撥4個,a1~a4第一撥,記為b1, a5~a6第2撥,記為b2,其餘第3撥,記為b3; 

第二步:將b1和b2放到天平兩盤上,記左盤為c1,右為c2;這時候分兩中情況: 

1.c1和c2平衡,此時可以確定從a1到a8都是常球;然後把c2拿空,並從c1上拿下a4,從a9到a12四球裡隨便取三球,假設為a9到a11,放到c2上。此時c1上是a1到a3,c2上是a9到a11。從這裡又分三種情況: 

a:天平平衡,很簡單,說明沒有放上去的a12就是異球,而到此步一共稱了兩次,所以將a12隨便跟11個常球再稱一次,也就是第三次,馬上就可以確定a12是重還是輕; 

b: 若c1上公升,則這次稱說明異球為a9到a11三球中的乙個,而且是比常球重。取下c1所有的球,並將a8放到c1上,將a9取下,比較a8和a11(第三 次稱),如果平衡則說明從c2上取下的a9是偏重異球,如果不平衡,則偏向哪盤則哪盤裡放的就是偏重異球; 

c:若c1下降,說明a9到a11裡有乙個是偏輕異球。次種情況和b類似,所以接下來的步驟照搬b就是; 

2.c1和c2不平衡,這時候又分兩種情況,c1上公升和c1下降,但是不管哪種情況都能說明a9到a12是常球。這步是解題的關鍵。也是這個題最妙的地方。 

a:c1上公升,此時不能判斷異球在哪盤也不能判斷是輕還是重。取下c1中的a2到a4三球放一邊,將c2中的a5和a6放到c1上,然後將常球a9放到c2上。至此,c1上是a1,a5和a6,c2上是a7,a8和a9。此時又分三中情況: 

1) 如果平衡,說明天平上所有的球都是常球,異球在從c1上取下a2到a4中。而且可以斷定異球輕重。因為a5到a8都是常球,而第2次稱的時候c1是上公升 的,所以a2到a4裡必然有乙個輕球。那麼第三次稱就用來從a2到a4中找到輕球。這很簡單,隨便拿兩球放到c1和c2,平衡則剩餘的為要找球,不平衡則 哪邊低則哪個為要找球; 

2)c1仍然保持上公升,則說明要麼a1是要找的輕球, 要麼a7和a8兩球中有乙個是重球(這步懂吧?好好想想,很簡單的。因為a9是常球,而取下的a2到a4肯定也是常球,還可以推出換盤放置的a5和a6也 是常球。所以要麼a1輕,要麼a7或a8重)。至此,還剩一次稱的機會。只需把a7和a8放上兩盤,平衡則說明a1是要找的偏輕異球,如果不平衡,則哪邊 高說明哪個是偏重異球; 

3)如果換球稱第2次後天平平衡打破,並且c1降低了,這說明異球肯定在換過來的a5和a6兩求中,並且異球偏重,否則天平要麼平衡要麼保持c1上公升。確定要找球是偏重之後,將a5和a6放到兩盤上稱第3次根據哪邊高可以判定a5和a6哪個是重球; 

b: 第1次稱後c1是下降的,此時可以將c1看成c2,其實以後的步驟都同a,所以就不必要再重複敘述了。至此,不管情況如何,用且只用三次就能稱出12個外 觀手感一模一樣的小球中有質量不同於其他11球的偏常的球。而且在稱的過程中可以判定其是偏輕還是偏重。

(3)演算法綜合實踐——搜尋引擎

上網搜尋有關「搜尋引擎」的相關資料,包括但不限於以下方面(至少要有2個方面):搜尋引擎崗位要求、搜尋引擎工作原理、搜尋引擎涉及到教材中哪些演算法、搜尋引擎的盈利模式、搜尋引擎原始碼鏈結、國內外搜尋引擎公司現狀等。

搜尋引擎架構師:

崗位職責 

1、負責公司搜尋引擎的核心功能設計,構建高可靠性、高可擴充套件性的體系結構,滿足日趨複雜的業務需求;

2、負責根據公司各條產品線應用需求主導設計搜尋產品的業務分析和設計研發工作;

崗位要求:

1、精通lucene,solr等開源搜尋引擎相關技術框架,達到原始碼級熟練;

2、熟悉資訊檢索理論,具有b2c搜尋相關技術開發背景者優先;

3、對搜尋分詞和排序評分演算法設計有較為深刻的理解,具有良好的分析問題和解決問題的能力,對解決具有挑戰性的問題充滿激情。

搜尋引擎工作原理:

(1)爬

行和抓取

第2次實驗 演算法基本功 與 綜合思考

1 演算法基本功 快速排序 對檔案 如下 include include include using namespace std define sizeofarray 1000000 void exchange int a,int b int partition int a int p,int r ...

第二次實驗

一 問題及 問題提 乙個數如果恰好等於它的因子之和,這個數就稱為 完數 例如6 1 2 3,再如8的因子和是7 即1 2 4 8不是完數。程式設計找出1000以內的所有完數。答案 6 28 496 檔名稱 作 者 周玉傑 完成日期 2017 年 3月 13 日 版 本 號 dev c 對任務及求解方...

第二次實驗

1 如何進行模式切換 哪兩種模式 答 第一次啟動linux系統會進入命令列模式,會要求輸入使用者名稱,預設的管理員帳號名為root,輸入 root 後回車,提示輸入密碼 密碼是在安裝系統時自己設定的 這樣就以管理員身份登陸了系統。第二種就是如果不想用使用命令列模式,而需要進入圖形介面 在命令列模式下...