石子の游戏:博弈论、DFS枚举
题意简述
输入 NNN 和 MMM 表示石子的数量和最多拿取的石子数,输出必胜方和可能出现的拿取方案。
赢家分析
这是一个经典的巴什博弈问题。根据其结论可得:
* 当 N mod (M+1)=0N \bmod (M+1) = 0Nmod(M+1)=0 时,先手必赢。
* 当 N mod (M+1)≠0N \bmod (M+1) \neq 0Nmod(M+1)=0 时,后手必赢。
由于当先手必胜时,一定会出 N mod (M+1)N\bmod (M+1)Nmod(M+1),使得剩下的石子数量为 M+1M+1M+1 的倍数。
方案数分析
由于必输方可以随意拿取 111 到 MMM 个石子,所以影响方案数的因素是必输方的拿取方案。我们可以使用排列公式来解决,在排列时记录每种方式。
每一方的拿取方案
由于必胜方需要让自己拿到石子数量与上一轮对方拿的石子数量之和为 M+1M+1M+1,所以若不计入先手必胜情况中的先手率先拿取的石子数量,轮数为:N÷(M+1)N\div(M+1)N÷(M+1)。
正解
时间复杂度:O(MNM+1)O(M^{\frac{N}{M+1}})O(MM+1N )
预计得分:140pts140pts140pts