常見智力題考察

IBM筆試題:有三個酒杯,其中兩個大酒杯每個可以裝8兩酒,一個可以裝3兩酒。現在兩個大酒杯都裝滿了酒,只用這三個杯子怎麼把酒平均的分給4個人喝?

總共16兩酒,4個人喝,平均每人喝4兩。

假設下面的三個數是8兩,8兩和4兩酒杯中的酒。

8 8 0

8 5 3

第一個人先喝3兩,變成

8 5 0

8 2 3

第二個人先喝2兩,變成

8 0 3

8 3 0

5 3 3

5 6 0

2 6 3

2 8 1

第一個人再喝1兩,就剛剛喝了4兩,變成

2 8 0

0 8 2

0 7 3

3 7 0

3 4 3

6 4 0

6 1 3

第三個人先喝1兩,變成

6 0 3

8 0 1

第四個人先喝1兩,變成

8 0 0

5 0 3

第三個人再喝3兩,就剛剛喝了4兩,變成

5 0 0

2 0 3

第二個人再喝2兩,就剛剛喝了4兩,變成

0 0 3

第四個人再喝3兩,就剛剛喝了4兩

爲了平均,每個人需要喝4兩。考慮到我們有一個3兩的杯子,所以問題的關鍵是如何量出儘可能多的1兩。

由於3*3-8=1,我們可以將3杯3兩倒入8兩杯中,剩下的就是1兩。用這個方法,我麼可以在總數爲9兩,10兩和11兩時3次量出1兩酒。

所以解題步驟就成爲首先量出3兩和2兩,這時剩下11兩,然後量出3次1兩酒,然後再2次量出3兩酒,最後剩下2兩。

IBM筆試題:16個硬幣,A和B輪流拿走一些,每次拿走的個數只能是1,2,4中的一個數。誰最後拿硬幣誰輸。

問:A或B有無策略保證自己贏?

B可以保證自己贏。

如果A拿1個,則B拿2個;如果A拿2個,則B拿1個;如果A拿4個,則B拿2個。這樣每次AB加起來都是3或者6,所以最後會剩下1個或4個。如果是1個則A直接輸了;如果剩下4個,A全拿則輸了,如果不全拿,B繼續採取上面的策略,最後還是剩下1個,還是A輸。

IBM筆試題:村子中有50個人,每人有一條狗。在這50條狗中有病狗(這種病不會傳染)。於是人們就要找出病狗。每個人可以觀察其他的49條狗,以判斷它們是否生病,只有自己的狗不能看。觀察後得到的結果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要槍斃自己的狗,而且每個人只有權利槍斃自己的狗,沒有權利打死其他人的狗。第一天,第二天都沒有槍響。到了第三天傳來一陣槍聲,問有幾條病狗,如何推算得出?

答案:

假設有1條病狗,病狗的主人會看到其他狗都沒有病,那麼就知道自己的狗有病,所以第一天晚上就會有槍響。因爲沒有槍響,說明病狗數大於1。

假設有2條病狗,病狗的主人會看到有1條病狗,因爲第一天沒有聽到槍響,是病狗數大於1,所以病狗的主人會知道自己的狗是病狗,因而第二天會有槍響。既然第二天也每有槍響,說明病狗數大於2。

由此推理,如果第三天槍響,則有3條病狗。

IBM筆試題:開關和燈泡的對應關係?

在房裏有三盞燈,房外有三個開關,在房外看不見房內的情況,你只能進門一次,你用什麼方法來區分哪個開關控制哪一盞燈?

答案:

設三個開關是1、2、3。打開開關1等半個小時,關上開關1並打開開關2。

進房後去摸燈泡,熱的是開關1對應的燈泡;亮的是開關2對應的燈泡;不亮不熱的是開關3對應的燈泡。

分析:

首先想到的就是通過打開不同的開關,進去後看燈是否亮來找出對應關係。可能打開的開關數量只有0,1,2,3共四種情況,沒有一種情況能解決這個問題。所以必須找到其它的信號。鑑於燈泡亮一段時間後會發熱,我們可以使用燈的熱度作爲一個信號。這樣我們就有了熱且亮,熱不亮,亮不熱,不熱不亮四種狀態,足以用來區分三隻燈泡了。

這個題可以理解成一個編碼問題,燈泡的狀態作爲編碼空間,進屋的次數作爲編碼位數。

如果只使用燈泡是否亮來判斷,題目就相當於用一位二進制數來表示三種狀態,是不可能的事情。加入了燈泡是否熱後,就相當於用一位四進制數來表示三種狀態,足夠了。

此題的一些可能變化:

1. 在房裏有四盞燈,房外有四個開關,在房外看不見房內的情況,你只能進門一次,你用什麼方法來區分哪個開關控制哪一盞燈?

2. 在房裏有n盞燈,房外有n個開關,在房外看不見房內,且進門後只能觀察燈的亮度的情況下,你需要進門多少次才能區分哪個開關控制哪一盞燈?

3. 在房裏有n盞燈,房外有n個開關,每個開關有三種狀態(開,關,半開(亮度爲開的一半))在房外看不見房內,且進門後只能觀察等的亮度的情況下,你需要進門多少次才能區分哪個開關控制哪一盞燈?

答案:

1.用上面你說的四種狀態熱且亮,熱不亮,亮不熱,不熱不亮就可以一次確定了

2. 至少需要進門n/3次吧

3 加入一種狀態,應該需要n/6

 

IBM筆試題:有一座山,山上有座廟,只有一條路可以從山上的廟到山腳,每週一早上8點,有一個聰明的小和尚去山下化緣,週二早上8點從山腳回山上的廟裏,小和尚的上下山的速度是任意的,在每個往返中,他總是能在週一和週二的同一鐘點到達山路上的同一點。例如,有一次他發現星期一的8點30和星期二的8點30他都到了山路靠山腳的3/4的地方,問這是爲什麼?

答案一:

可以用畫圖法來解釋:

在一個平面上,x 軸代表從8點開始的時間,y 軸代表距廟的距離。那麼從廟到山腳就是一條從左下到右上的一條曲線,從山腳到廟就是一條從左上到右下的一條曲線。考慮到兩條曲線的起始點和終點,兩線必定交於一點。

答案二:

還有一種更簡單的解釋,是讓兩個人從山頂和山腳同時相向而行,一定有一個時刻相遇,這樣就證明了。

IBM筆試題:在一個平面上畫1999條直線,最多能將這一平面劃分成多少個部分?

沒有直線時有一個空間;(1)

1條直線時,這條這些可以將這個空間分成兩個;(1+1)

2條直線時,第二條直線可以和第一條直線相交,這樣第二條直線可以將兩個空間分成四個;(1+1+2)

....

注意到畫每條直線時能增加多少個空間,取決於此直線從多少個空間中通過。

而從多少個空間中通過,取決於和多少條直線相交。

例如,如果一條直線和其它5條直線相交,那麼最大可以通過6個空間,此直線可以增加6個子空間。

畫每條直線時,能相交的直線數爲總的已經畫過的直線。

所以總的空間數最多爲

1+1+2+3+...+1999 = 1999001

IBM筆試題:不均勻分佈的香,每根香燒完的時間是一個小時,你能用什麼方法來確定一段15分鐘的時間?

第一根點燃兩頭,第二根只點一頭。

當第一根燒完時,時間過去了30分鐘,所以第二根還能燒30分鐘。這時點燃第二根的另外一頭,第二根香還能燒的時間就是15分鐘。

IBM筆試題:有27個人去買礦泉水,商店正好在搞三個空礦泉水瓶可以換一瓶礦泉水的活動,他們至少要買幾瓶礦泉水才能每人喝到一瓶礦泉水?

答案一:

如果開始買3瓶,那麼可以四個人喝,並且還能剩一個空瓶。

如果開始買9瓶,可以13個人喝,最後還剩一個空瓶。

如果開始買18瓶,那麼26個人喝,可以剩下兩個空瓶。

如果開始買19瓶,那麼27個人喝,最後剩下三個空瓶。所以最少買19瓶。

如果可以向商店先欲借一個空瓶,那麼買18瓶,最後一個人喝完再將空瓶還給商店。

那麼買18瓶也可以滿足要求。

答案二:

x + x/3 + x/3^2 + ... = x/(1-1/3)=27

x=18;

IBM筆試題:c++中引用和指針有什麼不同?指針加上什麼限制等於引用?

引用不是一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數據類型,因此引用本身不佔存儲單元,系統也不給引用分配存儲單元。引用一經確定就不能修改。

指針是一個變量,需要在內存中分配空間,此空間中存儲所指對象的地址。由於指針是一個普通變量,所以其值還可以通過重新賦值來改變。

把指針定義爲const後,其值就不能改變了,功能和引用類似,但有本質的區別。

IBM筆試題:一普查員問一女人,“你有多少個孩子,他們多少歲?”

女人回答:“我有三個孩子,他們的歲數相乘是36,歲數相加就等於旁邊屋的門牌號碼。“普查員立刻走到旁邊屋,看了一看,回來說:“我還需要多少資料。”女人回答:“我現在很忙,我最大的孩子正在樓上睡覺。”普查員說:”謝謝,我己知道了。”

問題:那三個孩子的歲數是多少。

36 = 1 × 2 × 2 × 3 × 3

所有的可能爲

1,1,36;sum = 38

1,2,18;sum = 21

1,3,12;sum = 16

1,4,9;sum = 14

1,6,6;sum = 13

2,2,9;sum = 13

2,3,6;sum = 11

3,3,4;sum = 10

由於普查員知道了年齡和之後還是不能確定每個孩子的年齡,所以可能性爲

1,6,6;sum = 13

2,2,9;sum = 13

由於最大(暗含只有一個最大)的孩子在睡覺,所以只可能是

2,2,9;sum = 13

一個小猴子邊上有100根香蕉,它要走過50米才能到家,每次它最多搬50根香蕉,每走1米就要吃掉一根,請問它最多能把多少根香蕉搬到家裏。

小猴子可以採用如下策略:

小猴子先搬50根,走到1米處,路上吃掉1根,放下48根後返回起始點,並在返回路上吃剩下的1根。然後將起始點處的50根香蕉搬到1米處,又在路上吃掉1根。這樣總共消耗了3根香蕉,將所有香蕉向前搬動了1米。採用類似的策略搬動16米後,總共消耗了48根香蕉,還剩下52根香蕉。

如果繼續按照同樣的策略向前移動到17米處,則剩下49根香蕉;如果直接在16米處丟掉2根香蕉,搬着50根香蕉向前走,在17米處也是有49根香蕉。所以猴子在17米處最多可以保留49根香蕉。

繼續搬到家還有33米,所以最後剩的香蕉數16根。

IBM筆試題:媽媽有2000元,要分給她的2個孩子。由哥哥先提出分錢的方式,如果弟弟同意,那麼就這麼分。但如果弟弟不同意,媽媽會沒收1000元,由弟弟提出剩下 1000元的分錢方式,這時如果哥哥同意了,就分掉這剩下的1000元。但如果哥哥也不同意,媽媽會把剩下的1000元也拿走,然後分別只給他們每人100元。

問:如果你是哥哥,你會提出什麼樣的分錢方式,使你有可能得到最多的錢?(最小單位1元)

此題和海盜分金問題有些相似。(可以在本博客中找到關於海盜分金的問題和解答。)

哥哥提出分配方案時,弟弟是否同意取決於拒絕後是否可以獲得更多利益。弟弟分配時,哥哥是否同意也取決於拒絕後是否可以獲得更多好處。

所以採取由後向前推導的方法。

如果在兩次分配中弟弟和哥哥都不同意,則弟弟和哥哥各獲得100元。

弟弟分錢時,爲保證哥哥同意,會提出哥哥101元,弟弟899元的分配方法。因爲哥哥獲得了比拒絕後的更多利益,所以必然會同意。

哥哥分錢時,爲保證弟弟同意,會提出哥哥1100元,弟弟900元的分配方法。因爲弟弟獲得了比拒絕後的更多利益,所以必然會同意。

也就是說,最終哥哥會提出哥哥1100元,弟弟900元的分配方法。

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