這個是騰訊2012年暑期實習生招聘的一道筆試題,考試的時候也沒仔細思考,沒作出來。╮(╯_╰)╭。如今回過來想一想,這題仍是蠻有意思的,本人給出了一種解法,不能保證100%正確,但願你們看到了提出本身的看法。
A、B兩人玩猜字遊戲,遊戲規則以下:
A選定一個 [1,100]之間的數字背對B寫在紙上,而後讓B開始猜;
若是B猜的偏小,A會提示B此次猜的偏小;
一旦B某次猜的偏大,A就再也不提示,這次以後B猜的偏小A也不會再提示,只回答猜對與否。
請問:B至少要猜( )次才能保證猜對?在這種策略下,B第一次猜想的數字是( )。
首先閱讀題目,一個很重要的信息點就是:
一旦B某次猜的偏大,A就再也不提示,這次以後B猜的偏小A也不會再提示,只回答猜對與否
。若是沒有這個條件,或者說改變這個條件,改成:
若是B猜的偏大,A會提示B此次猜的偏大 那麼相信你們都會給出答案,那就是用二分法,只須要7次就能夠保證猜對了。
可是如今的條件變了,若是B猜的偏大,那麼不提示,因此咱們得出結論就是:若是猜的偏大,只能一個一個往下猜。例如 A寫的數是91,你猜了100,偏大了,那麼你須要猜99,98,97一直到91。這樣就保證對了。這裏就不能猜95來節省次數了,由於猜了95 不管是偏大或者偏小,都不會有提示,因此95兩邊都是須要猜的。從100到91須要猜10次。
我從上面能夠看出,當咱們猜的數偏大了以後,須要一個合理的下屆來限定往下猜的次數,從下面兩個例子來講明每次猜的間隔也是很是重要。
例1:咱們要猜的數仍是91,咱們第一次猜90(偏小有提示),第二次猜100(偏大無提示),因而從100一個一個往下猜,這裏90就成爲了下屆,因此咱們從100往下猜,最多須要猜10次就能夠保證猜到了(10次中包括猜100這一次),這裏間隔爲10。
例2:咱們要猜的數仍是81,第一次猜80(偏小有提示),第二次咱們猜100(間隔20),這時就須要從100一個一個往下猜20次才能猜到(20次中包括猜100這一次)。這裏間隔爲20。
咱們要獲得答案,其實就是須要肯定這個間隔,和第一次猜的數字。
用n來表示間隔,須要猜的至少的次數
相似於此公式的最小值 n+100/n。很容易獲得n爲10的時候最小。後面解釋這個公式的含義。咱們先來看看我給出的答案的一個例子,理論的東西我也表達不清楚。
例3:咱們要猜的數字是91,咱們第一步猜10,以10爲間隔猜。
第一步10(偏小有提示),第二步20(偏小有提示),第三步30(偏小有提示),第四步40(偏小有提示),……,第九步90(偏小有提示),第十步100(
偏大無提示),所以一個一個往下猜,第十一步99,第十二步98,第十三步97,……,第十九步91 命中。因此這裏須要19步就猜中了。19步也是咱們的答案 ,須要保證19次才能100%的猜到。找不到另一個數字,須要19步以上的。看下例。
例4:咱們要猜的數字是81,咱們第一步猜10,以10爲間隔猜。
第一步10(偏小有提示),第二步20(偏小有提示),第三步30(偏小有提示),第四步40(偏小有提示),……,第八步80(偏小有提示),第九步90(
偏大無提示),所以一個一個往下猜,第十步89,第十一步88,第十二步97,……,第十八步81 命中。只需18步小於例1的19步。
例5:咱們要猜的數字是1,咱們第一步猜10,以10爲間隔猜。
第一步10(偏大無提示),所以一個一個往下猜,第二步9,第三步8,……,第十步1 命中。只需10步就能夠仍是小於19步。
題目要求咱們要保證猜對,就是要100%猜中,因此應該是 要猜中1-100 全部數字所需次數的最大值,即19。這個是須要注意的。
再來講說 上面提到的公式,100/n就表示以10爲間隔最多須要猜的次數,也就是咱們例3中,猜的這幾個步驟:10,20,30,40,……100。而n就表明從100猜到91須要的步驟,也就是間隔。
由於n + 100/n >= 20 其中100這裏咱們重複了,因此是19次。
在實驗過程當中,發現第一步猜的數字是不固定的,1-10中的任意一個都可。你們能夠試試的。
例如:第一步猜1,咱們要猜的數字是82,按照例3的方法,也是19次。
因此最終我給出的答案(
這種方法是錯誤的):
B至少要猜( 19)次才能保證猜對?在這種策略下,B第一次猜想的數字是( 1到10任一都可)。
很是感謝 6樓的
@大傻師,給出了更完美的方案,
我這種方案的只考慮到了間隔固定的狀況下,通過@大傻師提點確實當間隔不固定的狀況下,還能減小猜須要的次數,下面是@大傻師給出的答案。
答案是14次,第一次猜的數字應該是9到14中任意一個數
假設第一個猜的數字是k1
若是第1次答案是偏小,那下一個就猜k2=k1+13,若是仍是偏小,再就是k3=k2+12,依次類推
若是哪次猜到答案是偏大了,就從那次猜的數字往下一個個猜,最壞狀況就是14次。spa
例:若是第一個是9,那依次就是9,22,34,45,55,64,72,79,85,90,94,97,99,100.net
這題目確實鍛鍊人的腦子,開闊人的思惟,是個不錯的題目。歡迎你們提出寶貴的意見 謝謝!!