求一猜數字遊戲的思路,求猜數字遊戲的策略

時間 2022-05-02 23:30:08

1樓:匿名使用者

#include #define nxn 123 /*要猜的數值*/ int main() else if(nxn < n) else if(nxn == n) a = 0; } else printf("請正確輸入:"); } printf("對了,拜拜!"); return 0;}

2樓:匿名使用者

1.先生成一個隨機數2.系統提示請輸入一個數字猜測;3.

判斷此數字是否與生成的隨機數相等,若相等提示猜對了,若小了,提示猜小了,若大了,提示猜大了,4.進行迴圈,一直到提供可以猜測的次數為止(假設猜10次),當猜了10次還沒有才對,提示你失敗了,結束程式

3樓:匿名使用者

什麼猜數字? 你定一個數字讓別人猜?

求猜數字遊戲的策略

4樓:匿名使用者

先來一個比較簡單的

第一步先猜0001,2223,4445,6667,8889。既可判斷是那四個數比如1、3、5、0

第二步選一個沒有出現的數比如9,將它與前面四個中的一個組合,判斷其位置

比如1999,9199,9919可判斷1(前三個都不是就是第四個,下同)

第二個數需兩次,第三個需一次,剩下的是最後一個

這樣,最壞的情況只需11次,有點多,最大的優點是不需要動腦子

關於上述策略的改進

在第二步用兩個確定出現的數,比如0和1,以0001的方式輸入,有以下3種情況:

1a3b,0和1一定都不在第四位(因為這「1a」一定是0,如果是1,則0一定在前三位,會有2a,故1不在第四位,同樣因為「1a」是0,0也不是第四位。),這樣剩下兩個數一定有一個在第四位,剩下兩個數,比如2、3,以2232的方式輸入,如果3是第三位,則會顯示2a2b,否則是4b,這樣三四兩位就定下來了,再猜一次可以確定一二兩位的順序,9次一定可以猜對

2a2b,1一定是第四位,0一定不是第四位

4b,0一定是第四位,1一定不是第四位

上面兩種情況是等價的,第一次就可以確定一個數的位置,假設第四位是1,下一次猜0021,結果可能是3a1b,則結果是0321或3021,只需要再猜一次;或者2a2b,這是兩個0裡一定有一個是對的,2一定是錯的,所以第三位一定是3,結果是2031或0231,也只需要再猜一次;或者1a3b,這時0一定在第三位,結果是2301或3201,仍然只需要再猜一次

綜上所述,這種策略下,最壞的情況需要9次

進一步提高效率需要對各次的結果進行綜合,情況太多了,失去作為一種策略的意義

各位有高招歡迎指正~

5樓:161遊俠趙雲

首先強烈譴責"帝之魔王"的抄襲行為

這個問題,研究一下的確蠻有意思,下面是我的想法,不一定能解決問題,看可能可以給別人以啟發.我主要研究的是《在最壞情況下最少幾次猜中,策略如何?>

第一步,因為各個數都是一樣的,所以第一次輸入0123,現在輪到出題者,我相信沒人會給他a,頂多給他b,但是給他幾個b合理呢?

0b,下次猜到b的期望e=4*4/6=8/3

1b,e=1*1/4+3*3/6=7/4

2b,e=2*2/4+2*2/6=5/3

3b,e=3*3/4+1*1/6=29/12

4b,e=4作為出題人,希望對手猜對b的期望為最小,所以,選擇給他2b.

第二步,輸入4501,再次輪到出題者,現在問題開始複雜了.

我覺得可以把4501分為兩部分,45和01,其中45是新的,按上題的方法繼續做,

0b,e=2*2/4=1;

1b,e=1*1/2+1*1/4=3/4;

2b,e=2*2/2=2;所以出題者會在45中給1b.

其實複雜的是01部分,因為他涉及到a的部分,我只能假設,出題人在不得不給a時才給a這種情況,如果算期望的話,我已經搞不清了,所以從簡了,而且這假設我覺得不一定不合理.從給b部分,我們可以同樣按照開始的思路

0b,e=2*2/2=2

1b,e=1*1/2+1*1/2=1

2b,e=2*2/2=2

所以01中會給一個b,現在猜題者知道的東西有0,1中有1個;2,3中有一個;4,5中有一個;6,7,8,9中有一個.綜上,第2步,出題者給的是0a2b.

第三步,猜題者這一步,稍微聰明點,從4組數中分別去4個數,最起碼可以確定,3個數字.但是我們想,作為出題人,在6,7,8,9中,如果是一個數一個數猜,他肯定,會將最後一次猜的設為正確的以增加你猜題次數,也就是說,即使你從現在起,4步後,將6,7,8,9中正確數字的位置確定下來,也需要4步才能,將4個數字都確定.所以這種假設下,最少需要猜加上前面的兩步,共6步.

如果第三步猜2046.

出題人可以不給a就不給a的前提下,理智出題者給的應該是,0a1b為什麼給1b不給0b呢,如果給0b,那麼,猜題人就知道前三組數字中1,3,5是必對了,除了在確定a是比3b有優勢,其他地方沒優勢.而給1b而不給2b的原因也就在於,確定a的時候1b比2b更有優勢(猜題者更難猜)這樣對猜題者來說,是很麻煩的,因為,他不知道1b是哪個,這次作答幾乎對確定b沒有任何貢獻,所以,猜題者不應該出這些數字.如果前三組數字只出現1個,那麼不僅可以唯一確定這個數字所在組的b,而且對6,7,8,9中選b也有積極意義

現在總猜題情況為0123,4501所以第三步,出6078.

問題越來越複雜了,對於0可以給b也可以不給,對於6,7,8可以給b也可以不給,0b,1,9肯定是b;2b,1肯定是b,而且6,7,8之間肯定有b,但如果給1b,猜題折還需要猜測,這個b來自**,增加了猜題難度,所以出題者給0a1b.

第四步,現在總猜題情況為0123,4501,6078.後面在像前面一樣分析,我已經吃不消了,我就說我的猜題策略吧.第四步7890

如果第三步中,b是0的話,那麼,出題者該給答案1a1b

(沿著這個假設,往下,總猜題情況為0123,4501,6078,7890.現在知道的是0位置已經確定,9確定為b.第五步9240,如果9位置對了,那麼,如果給2a0b那麼結果必然是9350.

如果給2a1b結果必然是9430,如果給3a0b,結果可能是9250和9340也需要兩步,最不好的情況就是要7步;如果9位置沒對,我相信,在兩步也能解出來.)只考慮這中情況,出題人就可以將你的步數限制到最少7步

如果第三步中,b是6,7,8中的一個,那麼,0肯定不是b了,1肯定是b,而出題者只用考慮b是在7,8中,還是6,很顯然,出題者會讓b在7,8中,所以給的答案是0a1b.總猜題情況為0123,4501,6078,7890

第五步8215,出題者0a2b

第六步5381,出題者

1a0b===>2741,

1a2b===>3751,5731

2a1b===>3481

3a0b===>4381.只有這四種情況,是由於受到前面的限制.這中結果也需要7步

我不保證自己證明的都很嚴密,但作為一個解題者,我的感覺是,解這個題目可以步數更少些(雖然我也不知道能不能再少),如果有人能以更少的步數解出,我也會崇拜之,但如果說解這題目要比七步多,我就不同意了,我是完全站在出題者的立場,為難猜題者的思路的假設下去,這也是最糟糕的情況,這也應該是步數最多的情況,如果**不清楚可以問我,或者你認為自己可以讓我7步內猜不出,可以找我試試

6樓:敬初蘭

第一步先猜0001,2223,4445,6667,8889。既可判斷是那四個數比如1、3、5、0

第二步選一個沒有出現的數比如9,將它與前面四個中的一個組合,判斷其位置

比如1999,9199,9919可判斷1(前三個都不是就是第四個,下同)

第二個數需兩次,第三個需一次,剩下的是最後一個

這樣,最壞的情況只需11次,有點多,最大的優點是不需要動腦子

關於上述策略的改進

在第二步用兩個確定出現的數,比如0和1,以0001的方式輸入,有以下3種情況:

1a3b,0和1一定都不在第四位(因為這「1a」一定是0,如果是1,則0一定在前三位,會有2a,故1不在第四位,同樣因為「1a」是0,0也不是第四位。),這樣剩下兩個數一定有一個在第四位,剩下兩個數,比如2、3,以2232的方式輸入,如果3是第三位,則會顯示2a2b,否則是4b,這樣三四兩位就定下來了,再猜一次可以確定一二兩位的順序,9次一定可以猜對

2a2b,1一定是第四位,0一定不是第四位

4b,0一定是第四位,1一定不是第四位

上面兩種情況是等價的,第一次就可以確定一個數的位置,假設第四位是1,下一次猜0021,結果可能是3a1b,則結果是0321或3021,只需要再猜一次;或者2a2b,這是兩個0裡一定有一個是對的,2一定是錯的,所以第三位一定是3,結果是2031或0231,也只需要再猜一次;或者1a3b,這時0一定在第三位,結果是2301或3201,仍然只需要再猜一次

綜上所述,這種策略下,最壞的情況需要9次

7樓:

如果候選數字集為 。那麼這時猜 5617 和 5627 甚至是 5637 他們的效果都是一樣的。

這是因為 1, 2, 3 都在確定的位置,或者是未出現的,它會形成的 a 和 b 是固定的, ( 比如說,猜 5617 的話,1 所得到的一定是 b,猜 5627 的話 2 一定是 a )

不過要注意的一點是 4a0b 是比較特殊的情況。舉例來說,依照上面的推論猜 0125 和 0135 應該一樣好。因為 "2" 一定會形成 1a0b ,而 "3" 一定是 0a0b 。

可是 0135 並不在候選數字集內,但 0125 有 1/4 的機會。所以當要兩者等效時,以在候選數字集內者優先。

先試較好的猜法

我們根據 infomation gain 來排序所有可能的猜法,將最有 information gain 最大的猜法先作。如此一來,就可以較快得到比較好的答案(平均較小),同時利用子節點下界的來估計一節點的平均次數,如果其下界已超過目前所找到的最佳解,就不需要再嘗試了。我們愈快找到好的答案,就可以避免在不對的猜法上花太多的時間。

猜數字有何訣竅,求猜數字的技巧

雪劍 只有一點是 不要亂按數字 第一次按 0123 看看 對了多少 第二次按4567 看看 對了多少 這樣就可以看看8,9的情況了 沒有那就容易了 如果都有那也容易了 只是一種方法,只要是考你的邏輯思考 不要胡亂按 要想就行了 你試一下看看,是不是比之前容易了很多 有訣竅.但是很難言傳 我一般的習慣...

天之痕中猜數字遊戲,軒轅劍天之痕猜數字遊戲(雷夢澤)的答案是什麼?

小笨蛋2歲了 軒轅劍3天之痕中,除了主線任務,還有不少支線任務。在雷夏澤的師伯家外,陳靖仇會遇到一個名叫公山夢的小女孩。她是師伯的孫女,和她對話,她會和你玩個猜數字的遊戲,猜對後,她會送你一瓶不老之泉水,可以提高生命力上限。猜數字玩法簡介 小女孩要你猜 對話,然後輸入4個數字 如果數字的位置和字號都...

弓箭猜一數字,弓箭猜一數字

灑家神坑 數字是 31 弓的樣子就像3,箭的樣子就像1,弓在前箭在後,合起來就是31。拓展資料古代與現代以弓發射的具有鋒刃的一種遠射兵器。弓由彈性的弓臂和有韌性的弓弦構成 箭包括箭頭 箭桿和箭羽。箭頭為銅或鐵製 現代的箭頭多為合金 杆為竹或木質 現代多為純碳或鋁合金 羽為雕,鷹或鵝的羽毛。是軍隊與獵...