演算法的優雅(六) 天才的必勝法(一)

2021-06-10 02:04:38 字數 1001 閱讀 8918

首先,我們用乙個非常簡單問題引入:

在初中的時候,想必數學老師都出過這樣的問題(反正我們數學老師出過,大愛強姐~~~~~!!!!):兩個人從1開始輪流報數,最少1個,最多3個,搶到24為勝。

分析一下,要搶到24,那麼你就不能搶23,22,21了,所以,你搶到20是安全的,同理往下推,16——12——8——4——0,這些都是安全的,也是必搶的,所以可以看出來,後手通過這個策略是必勝的。

這就是我們要引出的東西,博弈問題。

提到博弈問題,就不得不說古老的nim遊戲。

nim遊戲敘述:有n個石子,兩個人輪流取,可以任意取乙個,或者取相鄰的兩個石子,期間石子的位置不能移動,最後乙個將剩下石子一次取光的人獲勝。

逐步分析一下

(1)n=1的時候或者n=2

只有1個石頭或2個石頭,顯然先手的人獲勝。

(2)n=3的時候

如果先手取中間的那塊石頭,則後手只能取第乙個或者第三個,從而留下乙個給先手,顯然先手必勝。

(3)n=4的時候

同理(2),先手先拿走中間的2,3塊石頭,留下1,4,則先手必勝。

(4)n>4的時候

通過對前面的總結,我們不難發現,當n>4,先手取中間乙個石子(n為奇數)或者兩個石子(n為偶數),那麼保證兩邊的石子一樣多,之後先手只要根絕後手的每次取法,對稱那堆取相同數目的石子,就可以保證每次都有石頭取,所以先手必勝。

例如:1 2 3 4 5 6 7 8 9

1 2 3 4 |  6 7 8 9   第一次先手取走了5,同時這個位置就是對稱軸了。

1 2    4 |  6 7 8 9   第二次後手取走了3,(不一定對於後手是最優策略,只是舉例而已。)

1 2    4 |  6    8 9   3和7是關於對稱軸對稱的,所以先手仿照後手,取走7.

總結整個問題,都是先手必勝。

如果,有n個石子,a和b兩個玩家,a將石子分成若干堆,之後依次babababa....選取,每次每個人只能在若干堆中選取一堆從中任意數目的石子(大於0),而將剩下一次取光為勝,問a該怎麼分配。

vijos P1514天才的記憶

從前有個人名叫w and n and b,他有著天才般的記憶力,他珍藏了許多許多的寶藏。在他離世之後留給後人乙個難題 專門考驗記憶力的啊!如果誰能輕鬆回答出這個問題,便可以繼承他的寶藏。題目是這樣的 給你一大串數字 編號為1到n,大小可不一定哦!在你看過一遍之後,它便消失在你面前,隨後問題就出現了,...

RMQ 模板 vijos1514天才的記憶

p1514天才的記憶 背景 神仙飛啊飛 描述 從前有個人名叫w and n and b,他有著天才般的記憶力,他珍藏了許多許多的寶藏。在他離世之後留給後人乙個難題 專門考驗記憶力的啊!如果誰能輕鬆回答出這個問題,便可以繼承他的寶藏。題目是這樣的 給你一大串數字 編號為1到n,大小可不一定哦!在你看過...

演算法的優雅(二)天平的煩惱

先來到簡單的題目引入 有140g的麵粉,給你乙個天平,乙個2g砝碼和乙個5g砝碼,讓你在三次稱量內將 麵粉分成90g和50g。這是人人上傳聞的一道tx筆試題,不過不是很難,想一下不難得出答案 第一次稱量 將麵粉分成70g和70g兩堆。第二次稱量 將一堆70g麵粉分成35g和35g,之後將其中乙個35...