有意思的筆試題記錄與分析

  昨天參加了某公司的筆試,總的來講題目很簡單。可是仍是有幾個個題目是頗有意思的,拿來和你們分享下!web

 一、小周帶着他的鴕鳥穿越1000千米的沙漠,運送3000顆白菜。已知鴕鳥一次性可駝1000顆白菜,但每走1千米又要吃掉1棵白菜,問:小周最終能夠運多少顆白菜?算法

分析:記得之前算法設計書上有個相似的油車過沙漠的問題,當時這問題是用倒推法來解決的,由於它有個結題突破口:油車以最少的耗油量穿過沙漠。本題同是過沙漠問題,可是卻沒有像油車過沙漠的解題突破口,怎麼辦呢?咱們先想一個極限:讓小周直接帶着1000顆白菜頭也不回的走到終點,這樣恰好在途中吃完了全部白菜。此時起點還堆着2000棵白菜!因此咱們只能折中:也就是每次出發都是帶1000棵白菜,可是還要想着再次開始新的旅程時,最開始的起點是沒有白菜的。具體作法:一共3000顆,因此大體能夠將全程分爲3個階段。編程

第一階段:每次只能運1000,因此要從起點出發走3次(一遍運完全部白菜,吃掉的歸吃掉總不至於像上面說的完事以後起點還有2000顆,可是再也回不去了!),減去最後一次出發無需返回的1次也就是第一階段來回5次。那麼每一回就吃掉1000/5=200顆,因此第一階段要走200千米。與此同時白菜的餘量=3000-200*5=2000;spa

第二階段:餘下2000顆,因此要從第一階段的終點出發走2次,減去最後一次無需返回的1次也就是第二階段來回3次,那麼每一回吃掉1000/3=333顆,因此第二階段要走333千米,剩餘白菜2000-333*3=1001顆。設計

第三階段:固然一路奔向成功了!要走的路程1000-200-333=467千米,用第二階段的白菜餘量1001-467就是最後到達終點時的白菜餘量即爲534顆。code

多謝園友一蟻行xDLMUCAI付的提醒,其實到第三階段的時候已經出來答案了,這是個選擇題只是我沒給選項罷了!我又斟酌了一下:在第二階段1000/3我作了粗略處理。應該剩餘1000/3顆,剩餘白菜1000顆。那麼第三階段就是1000-200-1000/3=466.7千米(約等於466千米,每走1千米吃1顆因此不足1千米就捨去),最終:1000-466=534顆。最後提醒你們本文所述均只表明我的觀點,若有錯誤或有更好的解決辦法,歡迎你們拍磚~orm

 

二、用一根繩子去測量海溝的深度,發現繩子放到2000米因自身重力斷掉了。若把相同材質的繩子半徑加粗到一杯,能放到多少米?blog

分析:咱們知道m=p*v,既然材質相同則p相同,v=π r² h,h不變時v擴大到原來的4倍。咱們再來從微觀看,上邊的拉力之因此能和下邊的拉力達到平衡,是由於繩子傳遞了這個拉力,繩子之因此能傳遞這個拉力是由於其分子之間有引力,當繩子之間分子的引力不足以傳遞這個拉力時,繩子的分子引力被拉力破壞,就像拉開吸引在一塊兒的磁鐵同樣,繩子宏觀表現被拉斷。因此咱們只需分析單位橫截面上的拉力便可,雖然繩子加粗會致使繩子的重力變爲原來的4倍,可是同時橫截面積液擴大爲原來的4倍,多以做用在單位橫截面上的拉力不變。因此仍是2000米。ci

三、這個題目記得不太清晰了,大體是這樣的:小明打算用20元去買花,要充分利用這些錢,那麼他必須買那一種花?get

    A、單價3.8元的  B單價4元的  C單價4.4元的   D單價6元的

這個題目呢我一看以爲若是編程實現的話很是容易!直接4個嵌套循環就ok,代碼以下

 

 1 protected void Button2_Click(object sender, EventArgs e)
 2         {
 3             List<string> l = new List<string>();
 4             for (int i = 0; i < 5; i++)
 5             {
 6                 for (int j = 0; j < 5; j++)
 7                 {
 8                     for (int x = 0; x < 5; x++)
 9                     {
10                         for (int y = 0; y < 5; y++)
11                         {
12                             if (3.8*i+4*j+4.4*x+6*y==20)
13                             {
14                                 l.Add(i.ToString() + "\t" + j.ToString() + "\t"+x.ToString()+"\t"+y.ToString());
15                             }
16                         }
17                     }
18                 }
19             }
20             ListBox1.DataSource = l;
21             ListBox1.DataBind();
22         }

執行結果(只有2組知足,對比可知選B):


問題:若是咱們在卷面作的時候要一種狀況一種狀況地試嗎?當時我作的時候我直接選的能被整除的B,可是我殊不知道問什麼!有知道的大神請分享下思想~

 

未完待續……

相關文章
相關標籤/搜索