17、乙個圓盤被塗上了黑白二色,兩種顏色各佔乙個半圓。圓盤以乙個未知的速度、按乙個未知的方向旋轉。你有一種特殊的相機可以讓你即時觀察到圓上的乙個點的顏色。你需要多少個相機才能確定圓盤旋轉的方向?
答案:你可以把兩個相機放在圓盤上相近的兩點,然後觀察哪個點先變色。事實上,只需要乙個相機就夠了。控制相機繞圓盤中心順時針移動,觀察顏色多久變一次;然後讓相機以相同的速度逆時針繞著圓盤中心移動,再次觀察變色的頻率。可以斷定,變色頻率較慢的那一次,相機的轉動方向是和圓盤相同的。
每匹馬都至少要有一次參賽的機會,所以25匹馬分成5組,一開始的這5場比賽是免不了的。接下來要找冠軍也很容易,每一組的冠軍在一起賽一場就行了(第6場)。最後就是要找第2和第3名。我們按照第6場比賽中得到的名次依次把它們在前5場比賽中所在的組命名為a、b、c、d、e。即:a組的冠軍是第6場的第1名,b組的冠軍是第6場的第2名……每一組的5匹馬按照他們已經賽出的成績從快到慢編號:
a組:1,2,3,4,5
b組:1,2,3,4,5
c組:1,2,3,4,5
d組:1,2,3,4,5
e組:1,2,3,4,5
從現在所得到的資訊,我們可以知道哪些馬已經被排除在3名以外。只要已經能確定有3匹或3匹以上的馬比這匹馬快,那麼它就已經被淘汰了。可以看到,只有上表中粗體的那5匹馬是有可能為2、3名的。即:a組的2、3名;b組的1、2名,c組的第1名。取這5匹馬進行第7場比賽,第7場比賽的前兩名就是25匹馬中的2、3名。故一共最少要賽7場。
這道題有一些變體,比如64匹馬找前4名。方法是一樣的,在得出第1名以後尋找後3名的候選競爭者就可以了。
19、題目如下:
0 1 2 3 4 5 6 7 8 9
_ _ _ _ _ _ _ _ _ _
在橫線上填寫數字,使之符合要求。
要求如下:對應的數字下填入的數,代表上面的數在下面出現的次數,比如3下面是1,代表3要在下面出現一次。
正確答案是:0 1 2 3 4 5 6 7 8 9
6 2 1 0 0 0 1 0 0 0
我的思路是:因為第二行的數字是第一行的數在下面出現的次數,下面10個格仔,總共10次。。。所以第2排數字之和為10。
首先從0入手,先填9,肯定不可能,9下面要是1,只剩8個位填0,不夠填8,8下面要填1,1要至少填2,後面不用再想,因為已經剩下7個位置,不夠填0……如此類推。到0下面填6的時候就得到我上面的答案了。。
其實可以推出這個題目的兩個關鍵條件:
1、第2排數字之和為10。
2、兩排數字上下相乘之和也是10!
滿足這兩個條件的就是答案,下面來編寫程式實現!
[cpp]view plain
copy
//原始數值: 0,1,2,3,4,5,6,7,8,9
//出現次數: 6,2,1,0,0,0,1,0,0,0
#include "iostream"
using
namespace
std;
#define len 10
class
numbertb
; numbertb::numbertb()
} int*numbertb::getbottom()
return
bottom;
} //set next bottom
void
numbertb::setnextbottom()
} success = reb;
} //get frequency in bottom
intnumbertb::getfrequecy(
intnum)
//此處的num 即指上排的數i
return
count;
//cout 即對應frequecy
} int
main(
void
)
cout);
return
0;
}
程式設計師有趣的面試智力題
1 考慮乙個雙人遊戲。遊戲在乙個圓桌上進行。每個遊戲者都有足夠多的硬幣。他們需要在桌子上輪流放置硬幣,每次必需且只能放置一枚硬幣,要求硬幣完全置於桌面內 不能有一部分懸在桌子外面 並且不能與原來放過的硬幣重疊。誰沒有地方放置新的硬幣,誰就輸了。遊戲的先行者還是後行者有必勝策略?這種策略是什麼?答案 ...
程式設計師有趣的面試智力題
偶然間在網上看到幾個原來沒見過的面試智力題,有幾個題目在國內流傳相當廣,什麼n個人怎麼分餅最公平,屋裡的三個燈泡分別由哪個開關控制,三架飛機環遊世界,用火柴和兩根繩子測量45分鐘之類的題目,火星得已經可以考古了,這裡就不再說了。1 考慮乙個雙人遊戲。遊戲在乙個圓桌上進行。每個遊戲者都有足夠多的硬幣。...
程式設計師有趣的面試智力題
偶然間在網上看到幾個原來沒見過的面試智力題,有幾個題目在國內流傳相當廣,什麼n個人怎麼分餅最公平,屋裡的三個燈泡分別由哪個開關控制,三架飛機環遊世界,用火柴和兩根繩子測量45分鐘之類的題目,火星得已經可以考古了,這裡就不再說了。1 考慮乙個雙人遊戲。遊戲在乙個圓桌上進行。每個遊戲者都有足夠多的硬幣。...