經典百度面試演算法 萬人工廠分配任務

2021-05-25 21:54:41 字數 936 閱讀 6504

摘自:

: a廠有1萬個工人,編號0-9999,( ee[10000] ), 1個廠長( gg )分派任務, 1個監工( mm )管理工人.廠子忙的時間不確定,可能突然很忙,1天接到任務5000多個,1個任務只能分配給1個工人做, 也可能好幾十天沒新任務.廠長分配任務給這1萬個工人幹,按工人編號乙個乙個來,到最後乙個工人就又從頭開始,任務完成時間各不相同,可能乙個工人在分配任務的時候手裡還有任務, 就得換下乙個。

但是這1萬個工人都很懶,領到了任務先不做,需要監工1個1個去問,如果工人有任務,就做,如果工人沒任務,則不做。廠長只管分任務,1個1個來,可能幾天也沒新任務,不累;但是監工很累,監工每天都要看所有工人的情況,即使這些工人都沒有任務, 實際上每天工人(80%左右)是沒任務的,請問,怎麼讓監工的工作輕鬆下來. 比如說每天只問1小半工人.

peak wong:

分析如下:

因為「任務完成時間各不相同」 ,所以有可能a,b,c某天都有任務,但b的任務最先完成,那麼當b的任務完成後,有任務的人的工號可能是不連續的;

用乙個陣列表示1萬個工人是否有任務,並儲存最後被分配任務的人的工號;

1)從前一天「最後被分配任務的人的工號」開始,依次問下乙個工號的人,置對應的工作狀態,直到碰到前一天無工作,且當天也無工作的人;並更新噹步最後有工作的人的工號為當天的「最後被分配任務的人的工號」;

2)從前一天「最後被分配任務的人的工號」開始,依次問上乙個工號且前一天有工作的人;

問題是監工可以知道那些資訊,否則還不是乙個乙個接著去問。

還有就是tailzhou的步驟1消耗的時間t1, 工人完成的時間t2,如果t2

所以很多條件都沒有限制。

延伸閱讀:

《程式設計之美》豆瓣

《程式設計之美》互動網

《程式設計之美》,

it人求職面試必讀

百度2014筆試演算法題彙總

1.使用c c 編寫函式,實現字串反轉,要求不使用任何系統函式,且時間複雜度最小,函式原型 char reverse str char str 2.給定乙個如下格式的字串 1,2,3 4,5,6 7 括號內的元素可以是數字,也可以是另乙個括號,請實現乙個演算法消除巢狀的括號,比如把上面的表示式變成 ...

百度面試小結

首先就是自我介紹啦,接著我們聊到前兩天csdn資料庫被黑導致使用者密碼被盜,然後聯絡到我和同學做的乙個小專案,專案是用php寫的,面試官就問我是怎麼處理使用者登入資訊的,我答用cookie,當然我知道這個很不安全,但是小 只供本校學生使用,就沒有考慮http傳輸時被竊取,當然我資料庫裡面是用md5加...

百度面試感想

下面就講講面試的過程,我報的移動終端開發,開始是自我介紹,我想這個已經介紹了大概好多次了,等我說完後,他就問我感覺筆試怎麼樣,我就說筆試有點難,然後叫我寫一道字串的題 乙個字串a abcd b cdab 怎樣去判斷b是否為a 字串左轉而成的結果,然後寫了二叉樹的深度優先遍歷,昨天晚上看了下,但是過去...