趣味二分法

2021-08-26 20:10:44 字數 917 閱讀 2348

趣味遊戲:猜數字

前序:歷史淵源

不曉得你是否玩過猜數字的遊戲?如果玩過,那麼你猜對過幾回呢?你是怎樣猜對的?有什麼訣竅嗎?

記得當年頭幾次玩這個遊戲的時候,那就是乙個胡猜,加上老天也不助我,一次都沒有矇對,想起來很是悲催。所以當時就有乙個念頭:自己買彩票肯定中不了!後來在開始學習程式設計時,有一次課間休息的時候老師讓大家來做個遊戲,說是猜數字。我當時就有點不淡定了。結果玩了幾個回合,大家猜的都不咋的,但是老師那傢伙是一猜乙個準,我當時就感覺真厲害。於是乎,他就把他自己寫的**給我們看,看完之後,大家都驚呼:原來是這樣啊,要是我知道我也能猜對!

那到底是怎樣呢?我們來看看。

正文:道出原委

其實,猜數字想要猜對很容易。其核心就是利用二分法的思想。閒言少敘,我還是用乙個例子來說明過程吧。

要求:有兩個人甲和乙,在1——100這100個數中,由甲隨意寫乙個數(只有甲知道),現在由乙來猜甲寫的這個數,並且猜對這個數時猜的次數最少。

分析:對於這個問題,有兩種情況。

情況一:想都不用想,隨便猜。這樣,猜對時所用的次數就是1 <= n <= 100.如果你命好,一次或者兩次就猜對了,那麼恭喜你,你真的可以去買彩票了;相反,你就要用好幾十次才能猜對。

情況二:利用二分法。過程如下:

實現**如下:

#include#include#includeusing namespace std; void prompt(); int createnum(); int guessnum(); bool comp(int result,int gn); int main() //...比較兩數是否相等 bool comp(int result,int gn) { if(result == gn) { cout<

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法,二分搜尋

二分法是乙個應用很廣泛的演算法 好吧,剛說出這句話的時候,我查了一下資料,發現我了解的應用寥寥無幾.ok,既然不知道,那就下次補充把。咱們直接進入主題。二分法 bisection method 是一種方程式根的近似值求法。演算法 若要求已知函式f x 0的值則 1.先找出乙個區間 a,b 使得f a...