智力題(真尼瑪有意思!!!)

目錄

1. 賽馬找最快

2. 砝碼稱輕重

3. 藥瓶毒白鼠

4. 繩子兩頭燒

5. 犯人猜顏色

6. 猴子搬香蕉

7. 高樓扔雞蛋

8. 輪流拿石子<頭條問過>

9. 螞蟻走樹枝

10. 海盜分金幣

11. 三個火槍手

12. 囚犯拿豆子

13. 學生猜生日<筆試高頻>


1. 賽馬找最快

一般有這麼幾種問法:

25匹馬5條跑道找最快的3匹馬,需要跑幾次?答案:7

64匹馬8條跑道找最快的4匹馬,需要跑幾次?答案:11

25匹馬5條跑道找最快的5匹馬,需要跑幾次?答案:最少8次最多9次

接下來我們看看詳細解法:

25匹馬5條跑道找最快的3匹馬,需要跑幾次?

 

將25匹馬分成ABCDE5組,假設每組的排名就是A1>A2>A3>A4>A5,用邊相連,這裏比賽5次

第6次,每組的第一名進行比賽,可以找出最快的馬,這裏假設A1>B1>C1>D1>E1

D1,E1肯定進不了前3,直接排除掉

第7次,B1 C1 A2 B2 A3比賽,可以找出第二,第三名

所以最少比賽需要7次

64匹馬8條跑道找最快的4匹馬,需要跑幾次?

第一步
全部馬分爲8組,每組8匹,每組各跑一次,然後淘汰掉每組的後四名,如下圖(需要比賽8場)

第二步
取每組第一名進行一次比賽,然後淘汰最後四名所在組的所有馬,如下圖(需要比賽1場)

這個時候總冠軍已經誕生,它就是A1,藍***域(它不需要比賽了),而其他可能跑得最快的三匹馬只可能是下圖中的黃***域了(A2,A3,A4,B1,B2,B3,C1,C2,D1,共9匹馬)

第三步
只要從上面的9匹馬中找出跑得最快的三匹馬就可以了,但是現在只要8個跑道,怎麼辦?那就隨機選出8匹馬進行一次比賽吧(需要比賽一場)

第四步
上面比賽完,選出了前三名,但是9匹馬中還有一匹馬沒跑呢,它可能是一個潛力股啊,那就和前三名比一比吧,這四匹馬比一場,選出前三名。最後加上總冠軍,跑得最快的四匹馬誕生了!!!(需要一場比賽)

最後,一共需要比賽的場次:8 + 1 + 1 + 1 = 11 場

來源:https://blog.csdn.net/u013829973/article/details/80787928

25匹馬5條跑道找最快的5匹馬,需要跑幾次?

(1) 首先將25匹馬分成5組,並分別進行5場比賽之後得到的名次排列如下:

A組:  [A1  A2  A3   A4  A5]

B組:  [B1  B2  B3   B4  B5]

C組:  [C1  C2  C3  C4  C5]

D組:  [D1  D2  D3  D4  D5]

E組:  [E1  E2  E3   E4  E5]

其中,每個小組最快的馬爲[A1、B1、C1、D1、E1]。

(2) 將[A1、B1、C1、D1、E1]進行第6場,選出第1名的馬,不妨設 A1>B1>C1>D1>E1. 此時第1名的馬爲A1。

(3) 將[A2、B1、C1、D1、E1]進行第7場,此時選擇出來的必定是第2名的馬,不妨假設爲B1。因爲這5匹馬是除去A1之外每個小組當前最快的馬。

(3) 進行第8場,選擇[A2、B2、C1、D1、E1]角逐出第3名的馬。

(4) 依次類推,第9,10場可以分別決出第4,5名的嗎。

因此,依照這種競標賽排序思想,需要10場比賽是一定可以取出前5名的。

仔細想一下,如果需要減少比賽場次,就一定需要在某一次比賽中同時決出2個名次,而且每一場比賽之後,有一些不可能進入前5名的馬可以提前出局。 當然要做到這一點,就必須小心選擇每一場比賽的馬匹。我們在上面的方法基礎上進一步思考這個問題,希望能夠得到解決。

(1) 首先利用5場比賽角逐出每個小組的排名次序是絕對必要的。

(2) 第6場比賽選出第1名的馬也是必不可少的。假如仍然是A1馬(A1>B1>C1>D1>E1)。那麼此時我們可以得到一個重要的結論:有一些馬在前6場比賽之後就決定出局的命運了(下面粉色字體標誌出局)。

A組:  [A1  A2  A3   A4  A5]

B組:  [B1  B2  B3   B4 B5 ]

C組:  [C1  C2  C3 C4  C5 ]

D組:  [D1  D2 D3  D4  D5 ]

E組:  [E1 E2  E3   E4  E5 ]

(3) 第7場比賽是關鍵,能否同時決出第2,3名的馬呢?我們首先做下分析:

在上面的方法中,第7場比賽[A2、B1、C1、D1、E1]是爲了決定第2名的馬。但是在第6場比賽中我們已經得到(B1>C1>D1>E1),試問?有B1在的比賽,C1、D1、E1還有可能爭奪第2名嗎? 當然不可能,也就是說第2名只能在A2、B1中出現。實際上只需要2條跑道就可以決出第2名,剩下C1、D1、E1的3條跑道都只能用來湊熱鬧的嗎?

能夠優化的關鍵出來了,我們是否能夠通過剩下的3個跑道來決出第3名呢?當然可以,我們來進一步分析第3名的情況?

● 如果A2>B1(即第2名爲A2),那麼根據第6場比賽中的(B1>C1>D1>E1)。 可以斷定第3名只能在A3和B1中產生。

● 如果B1>A2(即第2名爲B1),那麼可以斷定的第3名只能在A2, B2,C1 中產生。

好了,結論也出來了,只要我們把[A2、B1、A3、B2、C1]作爲第7場比賽的馬,那麼這場比賽的第2,3名一定是整個25匹馬中的第2,3名。

我們在這裏列舉出第7場的2,3名次的所有可能情況:

①  第2名=A2,第3名=A3

②  第2名=A2,第3名=B1

③  第2名=B1,第3名=A2

④  第2名=B1,第3名=B2

⑤  第2名=B1,第3名=C1

 

(4)  第8場比賽很複雜,我們要根據第7場的所有可能的比賽情況進行分析。

①  第2名=A2,第3名=A3。那麼此種情況下第4名只能在A4和B1中產生。

● 如果第4名=A4,那麼第5名只能在A5、B1中產生。

● 如果第4名=B1,那麼第5名只能在A4、B2、C1中產生。

不管結果如何,此種情況下,第4、5名都可以在第8場比賽中決出。其中比賽馬匹爲[A4、A5、B1、B2、C1]

②  第2名=A2,第3名=B1。那麼此種情況下第4名只能在A3、B2、C1中產生。

● 如果第4名=A3,那麼第5名只能在A4、B2、C1中產生。

● 如果第4名=B2,那麼第5名只能在A3、B3、C1中產生。

● 如果第4名=C1,那麼第5名只能在A3、B2、C2、D1中產生。

那麼,第4、5名需要在馬匹[A3、B2、B3、C1、A4、C2、D1]七匹馬中產生,則必須比賽兩場纔行,也就是到第9場角逐出全部的前5名。

③  第2名=B1,第3名=A2。那麼此種情況下第4名只能在A3、B2、C1中產生。

情況和②一樣,必須角逐第9場

④  第2名=B1,第3名=B2。 那麼此種情況下第4名只能在A2、B3、C1中產生。

● 如果第4名=A2,那麼第5名只能在A3、B3、C1中產生。

● 如果第4名=B3,那麼第5名只能在A2、B4、C1中產生。

● 如果第4名=C1,那麼第5名只能在A2、B3、C2、D1中產生。

那麼,第4、5名需要在馬匹[A2、B3、B4、C1、A3、C2、D1]七匹馬中產 生,則必須比賽兩場纔行,也就是到第9場角逐出全部的前5名。

⑤  第2名=B1,第3名=C1。那麼此種情況下第4名只能在A2、B2、C2、D1中產生。

● 如果第4名=A2,那麼第5名只能在A3、B2、C2、D1中產生。

● 如果第4名=B2,那麼第5名只能在A2、B3、C2、D1中產生。

● 如果第4名=C2,那麼第5名只能在A2、B2、C3、D1中產生。

● 如果第4名=D1,那麼第5名只能在A2、B2、C2、D2、E2中產生。

那麼,第4、5名需要在馬匹[A2、B2、C2、D1、A3、B3、C3、D2、E1]九匹馬中 產 生,因此也必須比賽兩場,也就是到第9長決出勝負。

總結:最好情況可以在第8場角逐出前5名,最差也可以在第9場搞定。

來源:iteye.com/blog/hxraid-662643


2. 砝碼稱輕重

這一類的題目有很多    這裏只舉幾個經典的:

1. 有一個天平,九個砝碼,其中一個砝碼比另八個要輕一些,問至少要用天平稱幾次才能將輕的那個找出來? 答案:2次

2. 十組砝碼每組十個,每個砝碼都是10g重,但是現在其中有一組砝碼每個都只有9g重,現有一個能顯示克數的秤,最少稱幾次能找到輕的那組?  答案:1次

有一個天平,九個砝碼,一個輕一些,用天平至少幾次能找到輕的?

至少2次:第一次,一邊3個,哪邊輕就在哪邊,一樣重就是剩餘的3個;
第二次,一邊1個,哪邊輕就是哪個,一樣重就是剩餘的那個;
答:至少稱2次.

有十組砝碼每組十個,每個砝碼重10g,其中一組每個只有9g,有能顯示克數的秤最少幾次能找到輕的那一組砝碼?

將砝碼分組1~10,第一組拿一個,第二組拿兩個以此類推。。第十組拿十個放到秤上稱出克數x,則y = 550 - x,第y組就是輕的那組


3. 藥瓶毒白鼠

有1000個一模一樣的瓶子,其中有999瓶是普通的水,有1瓶是毒藥。任何喝下毒藥的生命都會在一星期之後死亡。現在你只有10只小白鼠和1個星期的時間,如何檢驗出哪個瓶子有毒藥?

 

答案:

1、將10只老鼠剁成餡兒,分到1000個瓶蓋中,每個瓶蓋倒入適量相應瓶子的液體,置於戶外,並每天補充適量相應的液體,觀察一週,看哪個瓶蓋中的肉餡沒有腐爛或生蛆。(最好不要這樣回答)

2.

首先一共有1000瓶,2的10次方是1024,剛好大於1000,也就是說,1000瓶藥品可以使用10位二進制數就可以表示。從第一個開始:

第一瓶 :       00 0000 0001

第二瓶:        00 0000 0010

第三瓶:        00 0000 0011

……

第999瓶:       11 1111 0010

第1000瓶:     11 1111 0011

需要十隻老鼠,如果按順序編號,ABCDEFGHIJ分別代表從低位到高位每一個位。 每隻老鼠對應一個二進制位,如果該位上的數字爲1,則給老鼠喝瓶裏的藥。

觀察,若死亡的老鼠編號爲:ACFGJ,一共死去五隻老鼠,則對應的編號爲  10 0110 0101,則有毒的藥品爲該編號的藥品,轉爲十進制數爲:613號。(這纔是正解,當然前提是老鼠還沒被撐死)


4. 繩子兩頭燒

現有若干不均勻的繩子,燒完這根繩子需要一個小時,問如何準確計時15分鐘,30分鐘,45分鐘,75分鐘。。。

15:對摺之後兩頭燒(要求對摺之後綁的夠緊,否則看45分鐘解法)

30:兩頭燒
45:兩根,一根兩頭燒一根一頭燒,兩頭燒完過了30分鐘,立即將第二根另一頭點燃,到燒完又過15分鐘,加起來45分鐘
75:=30+45

。。。



5. 犯人猜顏色

 

一百個犯人站成一縱列,每人頭上隨機帶上黑色或白色的帽子,各人不知道自己帽子的顏色,但是能看見自己前面所有人帽子的顏色.
然後從最後一個犯人開始,每人只能用同一種聲調和音量說一個字:”黑”或”白”,
如果說中了自己帽子的顏色,就存活,說錯了就拉出去斬了,
說的答案所有犯人都能聽見,
是否說對,其他犯人不知道,
在這之前,所有犯人可以聚在一起商量策略,
問如果犯人都足夠聰明而且反應足夠快,100個人最大存活率是多少?

 

答案:這是一道經典推理題

1、最後一個人如果看到奇數頂黑帽子報“黑”否則報“白”,他可能死

2、其他人記住這個值(實際是黑帽奇偶數),在此之後當再聽到黑時,黑帽數量減一

3、從倒數第二人開始,就有兩個信息:記住的值與看到的值,相同報“白”,不同報“黑”

99人能100%存活,1人50%能活

 

除此以外,此題還有變種:每個犯人只能看見前面一個人帽子顏色又能最多存活多少人?

答案:在上題基礎上,限制了條件,這時上次的方法就不管用了,此時只能約定偶數位犯人說他前一個人的帽子顏色,奇數犯人獲取信息100%存活,偶數犯人50機率存活。


6. 猴子搬香蕉

一個小猴子邊上有100根香蕉,它要走過50米才能到家,每次它最多搬50根香蕉,(多了就被壓死了),它每走

1米就要喫掉一根,請問它最多能把多少根香蕉搬到家裏。(提示:他可以把香蕉放下往返的走,但是必須保證它每走一米都能有香蕉喫。也可以走到n米時,放下一些香蕉,拿着n根香蕉走回去重新搬50根。)

 

答案:這種試題通常有一個迷惑點,讓人看不懂題目的意圖。此題迷惑點在於:走一米喫一根香蕉,一共走50米,那不是把50根香蕉喫完了嗎?如果要回去搬另外50根香蕉,則往回走的時候也要喫香蕉,這樣每走一米需要喫掉三根香蕉,走50米豈不是需要150根香蕉?

其實不然,本題關鍵點在於:猴子搬箱子的過程其實分爲兩個階段,第一階段:來回搬,當香蕉數目大於50根時,猴子每搬一米需要喫掉三根香蕉。第二階段:香蕉數《=50,直接搬回去。每走一米喫掉1根。

我們分析第一階段:假如把100根香蕉分爲兩箱。一箱50根。

第一步,把A箱搬一米,喫一根。

第二步,往回走一米,喫一根。

第三步,把B箱搬一米,喫一根。

這樣,把所有香蕉搬走一米需要喫掉三根香蕉。

這樣走到第幾米的時候,香蕉數剛好小於50呢?

100-(n*3)<50 && 100-(n-1*3)>50

走到16米的時候,喫掉48根香蕉,剩52根香蕉。這步很有意思,它可以直接搬50往前走,也可以再來回搬一次,但結果都是一樣的。到17米的時候,猴子還有49根香蕉。這時猴子就輕鬆啦。直接揹着走就行。

第二階段:

走一米喫一根。

把剩下的50-17=33米走完。還剩49-33=16根香蕉。


7. 高樓扔雞蛋

有2個雞蛋,從100層樓上往下扔,以此來測試雞蛋的硬度。比如雞蛋在第9層沒有摔碎,在第10層摔碎了,那麼雞蛋不會摔碎的臨界點就是9層。

問:如何用最少的嘗試次數,測試出雞蛋不會摔碎的臨界點?

首先要說明的是這道題你要是一上來就說出正確答案,那說明你的智商不是超過160就是你做過這題。

所以建議你循序漸進的回答,一上來就說最優解可能結果不會讓你和麪試官滿意。

答案:

1.暴力法

舉個栗子,最笨的測試方法,是什麼樣的呢?把其中一個雞蛋,從第1層開始往下扔。如果在第1層沒碎,換到第2層扔;如果在第2層沒碎,換到第3層扔.......如果第59層沒碎,換到第60層扔;如果第60層碎了,說明不會摔碎的臨界點是第59層。

在最壞情況下,這個方法需要扔100次。

2. 二分法

採用類似於二分查找的方法,把雞蛋從一半樓層(50層)往下扔。

如果第一枚雞蛋,在50層碎了,第二枚雞蛋,就從第1層開始扔,一層一層增長,一直扔到第49層。

如果第一枚雞蛋在50層沒碎了,則繼續使用二分法,在剩餘樓層的一半(75層)往下扔......

這個方法在最壞情況下,需要嘗試50次。

3.均勻法

如何讓第一枚雞蛋和第二枚雞蛋的嘗試次數,儘可能均衡呢?

很簡單,做一個平方根運算,100的平方根是10。

因此,我們嘗試每10層扔一次,第一次從10層扔,第二次從20層扔,第三次從30層......一直扔到100層。

這樣的最好情況是在第10層碎掉,嘗試次數爲 1 + 9 = 10次。

最壞的情況是在第100層碎掉,嘗試次數爲 10 + 9 = 19次。

 

不過,這裏有一個小小的優化點,我們可以從15層開始扔,接下來從25層、35層扔......一直到95層。

這樣最壞情況是在第95層碎掉,嘗試次數爲 9 + 9 = 18次。

4.最優解法

最優解法是反向思考的經典:如果最優解法在最壞情況下需要扔X次,那第一次在第幾層扔最好呢?

答案是:從X層扔

假設最優的嘗試次數的x次,爲什麼第一次扔就要選擇第x層呢?

這裏的解釋會有些燒腦,請小夥伴們坐穩扶好:

假設第一次扔在第x+1層:

如果第一個雞蛋碎了,那麼第二個雞蛋只能從第1層開始一層一層扔,一直扔到第x層。

這樣一來,我們總共嘗試了x+1次,和假設嘗試x次相悖。由此可見,第一次扔的樓層必須小於x+1層。

假設第一次扔在第x-1層:

如果第一個雞蛋碎了,那麼第二個雞蛋只能從第1層開始一層一層扔,一直扔到第x-2層。

這樣一來,我們總共嘗試了x-2+1 = x-1次,雖然沒有超出假設次數,但似乎有些過於保守。

假設第一次扔在第x層:

如果第一個雞蛋碎了,那麼第二個雞蛋只能從第1層開始一層一層扔,一直扔到第x-1層。

這樣一來,我們總共嘗試了x-1+1 = x次,剛剛好沒有超出假設次數。

因此,要想盡量樓層跨度大一些,又要保證不超過假設的嘗試次數x,那麼第一次扔雞蛋的最優選擇就是第x層。

那麼算最壞情況,第二次你只剩下x-1次機會,按照上面的說法,你第二次嘗試的位置必然是X+(X-1);

以此類推我們可得:

x + (x-1) + (x-2) + ... + 1 = 100

這個方程式不難理解:

左邊的多項式是各次扔雞蛋的樓層跨度之和。由於假設嘗試x次,所以這個多項式共有x項。

右邊是總的樓層數100。

下面我們來解這個方程:

x + (x-1) + (x-2) + ... + 1 = 100  轉化爲

(x+1)*x/2 = 100

最終x向上取整,得到 x = 14

因此,最優解在最壞情況的嘗試次數是14次,第一次扔雞蛋的樓層也是14層。

最後,讓我們把第一個雞蛋沒碎的情況下,所嘗試的樓層數完整列舉出來:

14,27, 39, 50, 60, 69, 77, 84, 90, 95, 99, 100

舉個栗子驗證下:

假如雞蛋不會碎的臨界點是65層,那麼第一個雞蛋扔出的樓層是14,27,50,60,69。這時候啪的一聲碎了。

第二個雞蛋繼續,從61層開始,61,62,63,64,65,66,啪的一聲碎了。

因此得到不會碎的臨界點65層,總嘗試次數是 6 + 6 = 12 < 14 。

 

下面是我個人的理解:這個更像是優化版的均勻法,均勻法讓你第二次嘗試不超過10,但是第一次的位置無法保證(最多要9次,最好一次),這個由於每多一次嘗試,樓層間隔就-1,最終使得第一次與第二次的和完全均勻(最差情況)。

但是核心思路是逆向思考,因爲即使理解了需要兩次的和均勻也很難得到第一次要在哪層樓扔。

一旦理解了這種方法,多少層樓你都不會怕啦~

來源:https://blog.csdn.net/qq_38316721/article/details/81351297

這裏的很多人的一開始要注意的是隻有兩個雞蛋摔碎了就木有了。


8. 輪流拿石子<頭條問過>

問題:一共有N顆石子(或者其他亂七八糟的東西),每次最多取M顆最少取1顆,A,B輪流取,誰最後會獲勝?(假設他們每次都取最優解)。

答案:簡單的巴什博奕:https://www.cnblogs.com/StrayWolf/p/5396427.html

問題:有若干堆石子,每堆石子的數量是有限的,二個人依次從這些石子堆中拿取任意的石子,至少一個(不能不取),最後一個拿光石子的人勝利。

答案:較複雜的尼姆博弈:https://blog.csdn.net/BBHHTT/article/details/80199541

 


9. 螞蟻走樹枝

問題:放N只螞蟻在一條長度爲M樹枝上,螞蟻與螞蟻之間碰到就各自往反方向走,問總距離或者時間。

答案:這個其實就一個訣竅:螞蟻相碰就往反方向走,可以直接看做沒有發生任何事:大家都相當於獨立的

A螞蟻與B螞蟻相碰後你可以看做沒有發生這次碰撞,這樣無論是求時間還是距離都很簡單了。



10. 海盜分金幣

問題:5個海盜搶到了100枚金幣,每一顆都一樣的大小和價值。

他們決定這麼分:

  1. 抽籤決定自己的號碼(1,2,3,4,5)

  2. 首先,由1號提出分配方案,然後大家5人進行表決,當半數以上的人同意時(不包括半數,這是重點),按照他的提案進行分配,否則將被扔入大海喂鯊魚。

  3. 如果1號死後,再由2號提出分配方案,然後大家4人進行表決,當且僅當半超過半數的人同意時,按照他的提案進行分配,否則將被扔入大海喂鯊魚。

  4. 依次類推......

假設每一位海盜都足夠聰明,並且利益至上,能多分一枚金幣絕不少分,那麼1號海盜該怎麼分金幣才能使自己分到最多的金幣呢?

答案:

從後向前推,如果1至3號強盜都餵了鯊魚,只剩4號和5號的話,5號一定投反對票讓4號喂鯊魚,以獨吞全部金幣。所以,4號惟有支持3號才能保命。

 

3號知道這一點,就會提出“100,0,0”的分配方案,對4號、5號一毛不拔而將全部金幣歸爲已有,因爲他知道4號一無所獲但還是會投贊成票,再加上自己一票,他的方案即可通過。

 

不過,2號推知3號的方案,就會提出“98,0,1,1”的方案,即放棄3號,而給予4號和5號各一枚金幣。由於該方案對於4號和5號來說比在3號分配時更爲有利,他們將支持他而不希望他出局而由3號來分配。這樣,2號將拿走98枚金幣。

 

同樣,2號的方案也會被1號所洞悉,1號並將提出(97,0,1,2,0)或(97,0,1,0,2)的方案,即放棄2號,而給3號一枚金幣,同時給4號(或5號)2枚金幣。由於1號的這一方案對於3號和4號(或5號)來說,相比2號分配時更優,他們將投1號的贊成票,再加上1號自己的票,1號的方案可獲通過,97枚金幣可輕鬆落入囊中。這無疑是1號能夠獲取最大收益的方案了!答案是:1號強盜分給3號1枚金幣,分給4號或5號強盜2枚,自己獨得97枚。分配方案可寫成(97,0,1,2,0)或(97,0,1,0,2)。

 

此題還有變種:就是隻需要一半人同意即可,不需要一半人以上同意方案就可以通過,在其他條件不變的情況下,1號該怎麼分配才能獲得最多的金幣?

 

答案:類似的推理過程

4號:4號提出的方案的時候肯定是最終方案,因爲不管5號同意不同意都能通過,所以4號5號不必擔心自己被投入大海。那此時5號獲得的金幣爲0,4號獲得的金幣爲100。

 

5號:因爲4號提方案的時候 ,自己獲取的金幣爲0 。所以只要4號之前的人分配給自己的金幣大於0就同意該方案。

 

4號:如果3號提的方案一定能獲得通過(原因:3號給5號的金幣大於0, 5號就同意 因此就能通過),那自己獲得的金幣就爲0,所以只要2號讓自己獲得的金幣大於0就會同意。

 

3號:因爲到了自己提方案的時候可以給5號一金幣,自己的方案就能通過,但考慮到2號提方案的時候給4號一個金幣,2號的方案就會通過,那自己獲得的金幣就爲0。所以只要1號讓自己獲得的金幣大於0就會同意。

 

2號:因爲到了自己提方案的時候只要給4號一金幣,就能獲得通過,根本就不用顧及3 號 5號同意不同意,所以不管1號怎麼提都不會同意。

 

1號:2號肯定不會同意。但只要給3號一塊金幣,5號一塊金幣(因爲5號如果不同意,那麼4號分配的時候,他什麼都拿不到)就能獲得通過。

所以答案是 98,0,1,0,1。

 

類似的問題也可用類似的推理,並不難


11. 三個火槍手

問題:彼此痛恨的甲、乙、丙三個槍手準備決鬥。甲槍法最好,十發八中;乙槍法次之,十發六中;丙槍法最差,十發四中。如果三人同時***,並且每人每輪只發一槍;那麼槍戰後,誰活下來的機會大一些?

答案:

一般人認爲甲的槍法好,活下來的可能性大一些。但合乎推理的結論是,槍法最糟糕的丙活下來的機率最大。

那麼我們先來分析一下各個槍手的策略。

如同田忌賽馬一般,槍手甲一定要對槍手乙先***。因爲乙對甲的威脅要比丙對甲的威脅更大,甲應該首先幹掉乙,這是甲的最佳策略。

同樣的道理,槍手乙的最佳策略是第一槍瞄準甲。乙一旦將甲幹掉,乙和丙進行對決,乙勝算的概率自然大很多。

槍手丙的最佳策略也是先對甲***。乙的槍法畢竟比甲差一些,丙先把甲幹掉再與乙進行對決,丙的存活概率還是要高一些。

我們根據分析來計算一下三個槍手在上述情況下的存活機率:
第一輪:甲射乙,乙射甲,丙射甲。
甲的活率爲24%(40% X 60%)

乙的活率爲20%(100% - 80%)

丙的活率爲100%(無人射丙)。

由於丙100%存活率,因此根據上輪甲乙存活的情況來計算三人第二輪的存活機率:

情況1:甲活乙死(24% X 80% = 19.2%)
甲射丙,丙射甲:甲的活率爲60%,丙的活率爲20%。
情況2:乙活甲死(20% X 76% = 15.2%)
乙射丙,丙射乙:乙的活率爲60%,丙的活率爲40%。
情況3:甲乙同活(24% X 20% = 4.8%)
重複第一輪。
情況4:甲乙同死(76% X 80% = 60.8%)
槍戰結束。

據此來計算三人活率:
甲的活率爲(19.2% X 60%) + (4.8% X 24%) = 12.672%
乙的活率爲(15.2% X 60%) + (4.8% X 20%) = 10.08%
丙的活率爲(19.2% X 20%) + (15.2% X 40%) + (4.8% X 100%) + (60.8% X 100%) = 75.52%

通過對兩輪槍戰的詳細概率計算,我們發現槍法最差的丙存活的機率最大,槍法較好的甲和乙的存活機率卻遠低於丙的存活機率。

來自:https://www.zhihu.com/question/288093713/answer/482192781


 

 

12. 囚犯拿豆子

問題:有5個囚犯被***,他們請求上訴,於是法官願意給他們一個機會。

犯人抽籤分好順序,按序每人從100粒豆子中隨意抓取,最多可以全抓,最少可以不抓,可以和別人抓的一樣多。

最終,抓的最多的和最少的要被處死。

 

1、他們都是非常聰明且自私的人。

2、他們的原則是先求保命。如果不能保命,就拉人陪葬。

3、100顆不必都分完。

4、若有重複的情況,則也算最大或最小,一併處死(中間重複不算)。

假設每個犯人都足夠聰明,但每個犯人並不知道其他犯人足夠聰明。那麼,誰活下來的可能性最大?

 

答案:

不存在“誰活下來的可能性比較大”的問題。實際情況是5個人都要死。答案看起來很扯淡,但推理分析後卻發現十分符合邏輯。

 

根據題意,一號知道有五個人抓豆子,爲保性命,他只要讓豆子在20顆以內就可以了。但是他足夠聰明的話他一定拿20顆,因爲無論多拿一顆:2,3,4號的人一定會拿20顆最後死的人就會是最多的1號和最少的5號   還是少拿一顆:2,3,4號拿20個後,5號選擇也拿20個拉上1234號墊背。(下面會說爲什麼多拿少拿也只會相差一顆)

2號是知道1號抓了幾顆豆子(20)的。那麼,對於2號來說,只有2種選擇:與1號一樣多,或者不一樣多。我們就從這裏入手。

情況一,假如2號選擇與1號的豆子數不一樣多,也就是說2號選擇比1號多或者比1號少。

我們先要證明,如果2號選擇比1號多或者比1號少,那麼他一定會選擇比1號只多1顆或者只少1顆。

要證明這個並不算太難。因爲每個囚犯的第一選擇是先求保命,要保命就要儘量使自己的豆子數既不是最多也不是最少。當2號決定選擇比1號多的時候,他已經可以保證自己不是最少,爲了儘量使自己不是最多,當然比1號多出來的數量越小越好。因爲這個數量如果與一號相差大於1的話,那麼3號就有機會抓到的居中數,相差越大,二號成爲最多的可能性也就越大。反之,當2號決定選擇比1號少的時候,也是同樣的道理,他會選擇只比1號少1顆。既然2號只會會選擇比1號多1顆或者比1號少1顆,那麼1、2號的豆子數一定是2個連續的自然數,和一定是2n+1(其中1個人是n,另1人是n+1)。

輪到3號的時候,他可以從剩下的豆子數知道1、2號的數量和,也就不難計算出n的值。而3號也只有2個選擇:n顆或者n+1顆。爲什麼呢?這與上面的證明是一樣的道理,保命原則,取最接近的數量,這裏不再贅述。

不過,3號選擇的時候會有一個特殊情況,在這一情況下,他一定會選擇較小的n,而不是較大的n+1。這一特殊情況就是,當3號知道自己選擇了n後(已保證自己不是最多),剩下的豆子數由於數量有限,4、5號中一定有人比n要少,這樣自己一定可以活下來。計算的話就是 [100-(3n+1)]/2<=n ,不難算出,在這個特殊情況下,n>=20。也就是說,當1、2號選擇了20或21顆的時候,3號只要選擇20顆,就可以保證自己活下來。

這樣一來剩下的豆子只剩39顆,4、5號至少有一人少於20顆的(這個人當然是後選的5號),這樣死的將是5號和1、2號中選21顆的那個人。當然,1號、2號肯定不會有人選擇21這一“倒黴”的數字(因爲他們都是聰明人),這樣的話,上述“特殊情況(即3號選擇n)”就不會發生了。

綜上所述,2345這四個人不難從剩下的豆子數知道前面幾個人的數量總和,也就不難進而計算出n的值,而這樣一來他們也只有n或者n+1這兩種選擇。最後的5號也是不難算出n的。在前4個人只選擇了2個數字(n和n+1)的情況下,5號已是必死無疑,這時,根據“死也要拉幾個墊背”的條件,5號會選擇n或n+1,選擇5個人一起完蛋。

 

情況二,如果2號選擇了與1號不一樣多的話,最終結果是5個人一起死,那麼2號只有選擇與1號一樣多了。

那麼1、2號的和就是2n,而3號如果選擇n+1或者n -1的話,就又回到第一點的情況去了(前3個人的和是3m+1或3m+2),於是3號也只能選擇n ,當然,4號還是隻能選n,最後的結果仍舊是5個人一起完蛋。

 

“最後處死抓的最多和最少的囚犯”嚴格執行這句話的話,除非有人捨己爲人,死二留三。但這是足夠聰明且自私的囚犯,所以這五個聰明人的下場是全死,這道題只不過是找了一個處死所有人的藉口罷了. . . . . .

 

變種問題:如果每個囚犯都知道其他囚犯足夠聰明,事情會怎麼發展?

答案:

這樣的情況下囚犯一也會像我們一樣推導出前面的結論,那麼根據自私的規定,他會直接拿完100個,大家一起完蛋(反正結局已定)


13. 學生猜生日<筆試高頻>

這種題目筆試中出現的次數比較多,用排除法比較好解決

1.

小明和小強都是張老師的學生,張老師的生日是M月N日,

2人都知道張老師的生日是下列10組中的一天,張老師把M值告訴了小明,

把N值告訴了小強,張老師問他們知道他的生日是那一天嗎?

3月4日 3月5日 3月8日

6月4日 6月7日

9月1日 9月5日

12月1日 12月2日 12月8日

小明說:如果我不知道的話,小強肯定也不知道.

小強說:本來我也不知道,但是現在我知道了.

小明說:哦,那我也知道了.

請根據以上對話推斷出張老師的生日是哪一天?

答案:9月1日

排除法:

1.小明肯定小強不知道是哪天,排除所有月份裏有單獨日的月份:6月和12月<因爲如果小強的M是2或者7的話,小強就知道了,所以把6月7日與12月2日排除>,所以小明拿到的是3或者9

2.小強本來不知道,所以小強拿到的不是2或者7,但是小強現在知道了,說明把6月與12月排除後,小強拿到的是1,4,8中的一個<這裏小強肯定沒拿到5,否則他不會知道是哪天的>

3.小明現在也知道了,說明小明拿到的不是3,否則他不會知道是3月4日還是3月8日的,所以小明拿到的是9才能唯一確定生日

綜上,答案是9月1日

2.

小明和小強是趙老師的學生,張老師的生日是M月N日,張老師

把M值告訴小明,N值告訴小強

給他們六個選項

3月1日  3月3日  7月3日  7月5日  

9月1日  11月7日

小明說:我猜不出來

小強說:本來我也猜不出來,但是現在我知道了

問:張老師生日多少

答案:3月1日

排除法:

1.小明說猜不出來,說明小明拿到的不是單獨出現的9或者11,說明老師生日只能是3月或者7月

2.小強原本不知道,說明小強拿到的不是單獨出現的5或者7,說明老是生日是1日或3日

3.小強現在知道了,說明小強拿到的是1,因爲如果拿到的是3,那麼小強就不知道是3月3日還是7月3日了

綜上,老師生日是3月1日


作者:代碼不規範,測試兩行淚
鏈接:https://www.nowcoder.com/discuss/262595
來源:牛客網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章