打算写篇有关博弈的小题目的汇总。手头现只有一道,以后慢慢更新。
1. 有n个硬币,A、B两个人轮流摸,每次可以摸1~m个,摸到最后一个硬币的算输。求A的必胜策略。
答案,令 r = n%(m+1)。 如果r == 0,A先摸m个必胜;如果r == 1,A无必胜策略,B有必胜策略。如果r>1, A先摸r-1个必胜。
思路就是普通的逆推。首先要想办法最后只留1个硬币并且轮到B摸,那么就需要在倒数第二轮给B留下m+2个硬币,这样B在倒数第二轮摸i个,A只需要摸m+1-i个就可以达到最后留1个给B的效果。依次类推,在倒数第j轮,只要给B留下(j-1)(m+1)+1个硬币就必胜。总之,k为整数,每次给B留k(m+1)+1个让他摸,就可以必胜。
因此当r==0或者r>1时,先摸m个或者r-1个,就能留下k(m+1)+1个给B,必胜。但如果r==1,则B有必胜策略,所以A肯定没有必胜策略;B的策略可以是,每次A摸i个,B就摸m+1-i个,这样总是把k(m+1)+1个留给A去摸,则B必胜。