描述
有一堆n個(gè)棋子休溶,兩個(gè)玩家輪流從堆中拿走至少一個(gè)至多m個(gè)棋子漩仙,
每次拿的棋子數(shù)都可以不同,如果每個(gè)玩家都做出了最佳選擇芽突,哪個(gè)玩家能夠順利拿走最后一個(gè)棋子试浙?
解析
這種游戲的原型實(shí)例是拈游戲中的單堆棋子版本。現(xiàn)在假設(shè)游戲已經(jīng)進(jìn)行了一會(huì)寞蚌,雙方都能做出最佳選擇田巴,現(xiàn)在輪到你
情況:
1. 如果n=0,也就是你已經(jīng)沒法走了钠糊,輸
2. 如果n=1~m,你可以拿走剩下全部棋子壹哺,下一步對(duì)方的情況是1抄伍,贏
3. 如果n=m+1,都會(huì)把對(duì)方推向情況2管宵,輸
4. 如果n=m+2 ~ 2m+1(即m+1+m)截珍,拿走(1~m)個(gè),將對(duì)方推向情況3,贏
5. 如果n=2(m+1)=2m+2,拿走任意個(gè)箩朴,將對(duì)方推向情況4岗喉,輸
結(jié)果
- 當(dāng)n%(m+1)==0,結(jié)局必定為輸
- 當(dāng)n%(m+1)!=0,獲勝
獲勝的策略是取走n%(m+1)個(gè)棋子炸庞。
實(shí)例
假設(shè)n=9钱床,m=3。己方先手埠居,按照上面得到的結(jié)論推導(dǎo)n%(m+1)!=0查牌,所以己方獲勝。
- 9%(3+1)=1滥壕,取走1個(gè)
- 假設(shè)對(duì)方拿走3個(gè)(為方便)
- 5%4=1纸颜,取走1個(gè)
- 這次取走1個(gè)(隨意)
- 3%4=3,全部取走,獲勝
總結(jié)
所以根據(jù)初始n和m算出可以獲勝捏浊,只要按照確定的公式取走棋子懂衩,無論對(duì)方如何取都能確保獲勝。
拓展
對(duì)于一般性的拈游戲金踪,即有多堆棋子浊洞,有一種令人稱奇的解法:
基于隊(duì)中棋子的二進(jìn)制表示,b1/b2/b3/b4.....為各堆中棋子個(gè)數(shù)的二進(jìn)制表示胡岔。當(dāng)且僅當(dāng)所有二進(jìn)制異或和中包含至少一個(gè)1時(shí)法希,該實(shí)例為勝局,當(dāng)且僅當(dāng)所有二進(jìn)制異或和中不包含1時(shí)靶瘸,該實(shí)例為輸局苫亦。(異或和也可以看作沒有進(jìn)位的加法)
如n1=4,n2=5,n3=6
要使對(duì)方輸屋剑,就要使異或和所有位數(shù)都為0,這里無法實(shí)現(xiàn)诗眨。