石子游戏III-博弈论
参考题解;
思路
我们首先考虑结束前的临界情况:〇 n个堆中有 个空堆,其余为非空堆,显然此时 时回合先手必输,即先手无法进行任何操作;
更进一步,每一回合操作时,回合后手可以通过选择与回合先手互异的 n/2 堆来使每一堆在本回合至少石子数减一;
那么对于① n个堆中有 个一子堆,其余堆子数大于1的情况,我们可以推出如果 时回合先手必输,即无论回合先手如何操作,回合后手可以将局势控制到情况〇;
由此来说,对于② n个堆中有 个二子堆,其余堆子数大于2的情况,我们可以推出如果 时回合先手必输,即若先手将最小子数刷新到1,后手就可以将局势控制到情况①,若最小子数刷新到0,后手就可以控制到情况〇;
以此类推,对于最小子数堆共有 个时,如果 时回合先手必输(最小的一个数,出现的次数大于 n/2);否则先手可以通过一次操作将最小子数堆个数更新至 ,回合先后手调换,回合先手(全局后手)必输;
代码
1 |
|
石子游戏III-博弈论
https://tanyuu.github.io/2022.01-06/石子游戏III-博弈论/