程式設計師面試題 火柴棍式 火車運煤

2022-03-29 13:29:06 字數 2115 閱讀 4629

程式設計師面試題-

1. 「火柴棍式」

2023年3月21日陳皓

有時候,有些面試題是很是無厘頭,這不,又有乙個,還記得小時候玩的的「火柴棍遊戲」嗎,就是移動一根火柴棍改變乙個圖或字的遊戲。程式面試居然也可以這麼玩,看看下面這個火柴棍式的程式面試題吧。

下面是乙個c程式,其想要輸出20個減號,不過,粗心的程式設計師把**寫錯了,你需要把下面的**修改正確,不過,你只能增加或是修改其中的乙個字元,請你給出三種答案。

int n = 20;

for(int i = 0; i < n; i--)

不要以為這題不是很難,我相信你並不那麼容易能找到3種方法。我覺得,如果你能在10分鐘內找出這三種方法,說明你真的很聰明,而且反應很快。當然,15分鐘內也不賴。不過,你要是30分鐘內找不到三種方法,當然,不說明你笨了,最多就是你的反應還不夠快。嘿嘿。就當是玩玩吧。

下面是我的答案:

//第一種解法:在for迴圈中給n加乙個負號

for(int i = 0; i < -n; i--)

//第二種解法:把 n 初始化成 -20

int n = -20; 

//第三種解法:把for迴圈中的 i 初始化成40

for(int i = 40; i < n; i--)

不過,我要告訴你,以上這些答案都不對(我就知道你會偷看答案的),不過,順著這些思路走很接近了。呵呵。

下面是正確答案——

//第一種解法:在for迴圈中給 i 加乙個負號

for(int i = 0; -i < n; i--) 

//第二種解法:在for迴圈中把 i-- 變成 n--

for(int i = 0; i < n; n--) 

//第三種解法:把for迴圈中的 < 變成 +

for(int i = 0; i + n; i--)

通過修改、增加乙個字元,讓其輸出21個減號

通過修改、增加乙個字元,讓其只輸出1個減號

通過修改、增加乙個字元,讓其不輸出減號

2. 火車運煤

這個可能是乙個比較經典的智力題了,和以前的那個《賽馬問題》很相似,其題目如下:

你是山西的乙個煤老闆,你在礦區開採了有3000噸煤需要運送到市場上去賣,從你的礦區到市場有1000公里,你手裡有一列燒煤的火車,這個火車最多只能裝1000噸煤,且其能耗比較大——每一公里需要耗一噸煤。請問,作為乙個懂程式設計的煤老闆的你,你會怎麼運送才能運最多的煤到集市?

這道題一開始看上去好像是無解的,因為你的火車每一公里就要消耗一噸煤,而到目的地有1000公里,而火車最多只能裝1000噸媒。如果你的火車可以全部裝下,到目的地也會被全部燒光,一丁點也不剩。所以,很多人的第一反應都是覺得這個不太可能。

如果你一開始就覺得不太可能的話,這是很正常的。不過我不知道你還會不會繼續思考下去,如果你不想思考下去了,那麼我很為你擔憂,因為你可能並不是乙個不善於思考的人,而是乙個畏難的人,還有可能是乙個容易放棄的人。這對於你做好乙個需要大量思考的工作的程式設計師來說可能並不適合。

我一開始也覺得不可能,後來想了一想,想到乙個解法可以最多運送500噸煤到市場,方法如下:(希望你先自己想一想再檢視這個答案)

【檢視答案】

裝1000噸煤,走250公里,扔下500噸煤,回礦山。

裝1000噸煤,走到250公里處,拿起250噸煤繼續向前到500公里處,扔下500噸煤,回礦山。此時火車上還有250噸,再加上在250公里處還有250噸煤,所以,火車是可以回礦山的。

裝上最後1000噸煤,走到500公里處,裝上那裡的500噸煤,然後一直走到目的。

於是,你最多可以運送500噸煤到市場(當然,火車也回不去了,因為那礦山沒有煤了)

好像這樣很不錯的了,不過還有更好的方法能運更多的媒過去。你知道這個方法嗎?可以提示的是,就是以上述這個方法的思路。我先暫時不把答案放上來,你可以自己想想。過兩天我把答案放上來。

更新(2023年4月17日):大家都很聰明,533是應該是最優解,大家用了很多種方法闡述了這一過程,我最初的想法和朋友xpacificcoolshell的一致!很高興看到有更為科學的解法,受教了。另外,還有一些朋友提出火車不能隨時隨地調頭的實際情況,非常不錯,所以,以後這題不能用火車運煤了,可能是用馬運草更好一點了。;)

「火柴棍式」程式設計師面試題

下面是乙個c程式,其想要輸出20個減號,不過,粗心的程式設計師把 寫錯了,你需要把下面的 修改正確,不過,你只能增加或是修改其中的乙個字元,請你給出三種答案。int n 20 for int i 0 i n i 答案 第一種解法 在for迴圈中給 i 加乙個負號 for int i 0 i n i ...

「火柴棍式」程式設計師面試題

有時候,有些面試題是很是無厘頭,這不,又有乙個,還記得小時候玩的的 火柴棍遊戲 嗎,就是移動一根火柴棍改變乙個圖或字的遊戲。程式面試居然也可以這麼玩,看看下面這個火柴棍式的程式面試題吧。下面是乙個c程式,其想要輸出20個減號,不過,粗心的程式設計師把 寫錯了,你需要把下面的 修改正確,不過,你只能增...

「火柴棍式」程式設計師面試題

有時候,有些面試題是很是無厘頭,這不,又有乙個,還記得小時候玩的的 火柴棍遊戲 嗎,就是移動一根火柴棍改變乙個圖或字的遊戲。程式面試居然也可以這麼玩,看看下面這個火柴棍式的程式面試題吧。下面是乙個 c程式,其想要輸出 20個減號,不過,粗心的程式設計師把 寫錯了,你需要把下面的 修改正確,不過,你只...