常見的猜數字遊戲,例如玩家a心中默記乙個1-100之間的乙個數字包括1和100.玩家b去猜測這個數字,規則如下:
1.當猜測的數字小於玩家a心中記的數字時,玩家a提示玩家b所猜測數字小了;
2.當猜測的數字大於玩家a心中記的數字時,玩家a提示玩家b所猜測數字大了;
3.當猜測的陣列等於玩家a心中記的數字時,玩家a提示玩家b所猜測數字正確,遊戲結束。
這個遊戲的最好結果自然是1此猜中,但是最壞結果仍然可以通過計算得到,使用二分法的猜測方式就可猜測到正確的數字。
1.當猜測的數字小於玩家a心中記的數字時,玩家a提示玩家b所猜測數字小了;
2.當猜測的數字大於玩家a心中記的數字時,玩家a提示玩家b所猜測數字大了,從此之後玩家a再也不給玩家b任何提示。
問題:玩家b存在猜中數字的可能,問至少需要多少次才能夠猜中數字。
通過了一些調查以後得到了一些這樣的答案:
1.你猜;
3.1次
4.8次
5.2次
我與朋友也做了一些互動的測試。
最好的情況猜了2次。他記的是我的學號17,我第一次猜他的學號9,他笑了;第二次就猜對了。
最壞的情況猜了19才。他記的是99,我第一次才12,之後每次都加11.
面對這樣的結果我只能鎖定乙個範圍,後來畫了乙個圖:
猜1算是一種無效的操作。
隨後可以從圖上的橙色去猜測,發現總能將數字鎖定在兩個橙色數字之間,然後在去猜測具體的數字。
猜測具體的數字:
猜測具體的數字的時候顯然最多有10個,但是在猜測具體數字的時候是不會有提示的,所以二分法也不能起作用,因此在求最壞情況只能遍歷這10個數字。因此猜測具體的數字需要10次。現在考慮橙色數字的猜測次數。
這個數字考慮最優情況,就是在猜12的時候就提示數字大了,這樣就可以遍歷1-11所有的數字,因此一共要猜測12次。
如果繼續猜測12以後的橙色數字的時候自然次數就變大了,此時是10+(猜測橙色數字的個數)>=12。最壞的情況下所猜測的數字是90-99之間這樣要猜測的數字個數就變成了9+(猜測的具體的數字個數)<=19。
被篡改的daemon
ecs伺服器的cpu總是被init用掉30 左右,而且可以看到整個系統的sy佔比相當之高。首先,init程序作為linux系統所有程序的父程序,負責系統的啟動過程。這個程序使用cpu資源,我們第乙個需要問自己的問題是,這個程序到底在做什麼。使用strace可以掛到正在執行的程序上,追蹤程序的系統呼叫...
瀏覽器主頁被篡改的問題
本文中 在主人不知道 未同意 不小心忽略的情況下改動了瀏覽器的主頁 起始頁,一律稱為篡改。這是重中之重!找到篡改你瀏覽器主頁的那個程式,然後將它解除安裝掉!不然就算你改了主頁也會被它改回去,一般來說以360和2345開頭的軟體都會去嘗試修改你的瀏覽器主頁。哪些軟體會去篡改你的瀏覽器主頁呢。我們電腦裡...
MD5防止資料被篡改的做法
一 基本思路 大致思路是把傳送的資料 用src表示 和一段我們自己才知道的字串 用key表示 通過乙個演算法變為一段簽名文字 用sign表示 在伺服器端接收到資料src和sign後,用相同的演算法計算出簽名文字 用sign1 表示。比較sign和sign1是否一致。如果一致表明資料 src 沒有被篡...