目錄
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,2,3,4,5)
-
首先,由1號提出分配方案,然後大家5人進行表決,當半數以上的人同意時(不包括半數,這是重點),按照他的提案進行分配,否則將被扔入大海喂鯊魚。
-
如果1號死後,再由2號提出分配方案,然後大家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
來源:牛客網