拿火柴遊戲

2021-09-29 06:10:23 字數 753 閱讀 1768

桌子上有一堆火柴,遊戲開始時共有n根火柴,兩個玩家輪流拿走1、2、3、4根火柴(選擇一種方案拿),拿走最後一根火柴的玩家為獲勝方。請問先走的玩家設計乙個制勝的策略(如果該策略存在)

若桌子上只有只有1-4根火柴,那麼先手必贏;

若桌子上只有5根火柴,那麼無論先手拿幾根都必輸;

也就是意味著先手若要贏,那麼快拿到最後的時候,要出現這樣一種情況:先手一拿完,巧好剩5根,這才能保證先手必贏;

那麼問題就成了怎麼出現剛才說的那種情況,其實只需重複一下上面的過程:

若桌子上只有只有6-9根火柴,那麼先手可以保證這堆火柴巧好剩5根,回到上面,先手必贏;

若桌子上只有10根火柴,那麼無論先手拿幾根都必輸;

…所以,大家應該已經看出規律了,如果火柴數一開始就是5的整數倍,那麼先手是沒有必贏策略的(後手倒有),只有火柴數一開始就不是5的整數倍,那麼先手只需要拿掉幾根火柴,使剩餘的火柴數是5的整數倍,就可以保證必贏;

然後有人可能會說,看是看懂了,問題是咋想到的了,emmm,我只能說我是根據化繁為簡的原則,一開始考慮的火柴數先化到最簡單的情形,然後逐步加深。

對於可能有些題目允許拿火柴的數量不一樣,可自行調整修改。

#include

#include

#include

#include

using

namespace std;

intmain()

else

}return0;

}

拿火柴遊戲(拿子遊戲)

拿子遊戲歡迎來到二陽的學習課堂,下面怎麼設計乙個遊戲!拿子遊戲。考慮下面這個遊戲 桌子上有一堆火柴,遊 戲開始時共有n根火柴,兩個玩家輪流拿走1根 2根 3根或4 根火柴,拿走最後一根火柴的玩家為獲勝方。請為先走的玩家 設計乙個制勝的策略 如果該策路存在 1.問題分析 n根火柴,兩位玩家每次只能取1...

取火柴遊戲

玩完幾把遊戲後。突然想起了乙個比較老的遊戲 取火柴遊戲!遊戲規則簡單 不需要撿裝備,也沒有危險的空投。emm言歸正傳!有n根火柴,每人每次最多取4根火柴,最少取一根火柴。如果某人取到最後一根火柴,那麼恭喜你,輸了!emmm上 void quhuochai last last user if last...

取火柴遊戲

include include include using namespace std float num1 0 float num2 0 struct treenode class tree float chance treenode ptr void run tree tree1 protect...