给定的是一排最多 30 颗可以是黑色或白色的石头。比赛开始时不允许有空隙,但可以少于 30 颗棋子。目标是移除所有的石头。只有黑色的石头可以被移除,如果一颗石头被移除,它的邻居会改变颜色。如果移除的石头在中间,就会产生一个无法再填充的空隙;移除石头后,该石头的邻居不被视为邻居。
现在,我创建了一个使用蛮力解决这个游戏的程序。我得出的结论是,只有在有任何黑子(显然)并且黑子的数量是奇数的情况下,该游戏才可以解决。此外,如果黑子的数量是奇数,则可以通过递归删除该行的第一个黑子来解决游戏。
我的问题是我无法证明黑子的数量一定是奇数并且移除第一块石头就能解决游戏的条件。我怎样才能正确地证明这个算法?
我已经尝试过使用归纳法,但我被困住了:
行(a,b) = a*黑色 + b*白色
RemoveFirstBlack(Row(1, b)) = RemoveFirstBlack(black + b*white) = 0(如果 a=1 或 n = 0,其中 a=2n+1 且 n 为整数)
假设 RemoveFirstBlack(Row(k*a, b)) = RemoveFirstBlack(k*a*black + b*white) = 0 其中 k = 2p + 1 且 p 为整数。
RemoveFirstBlack(Row((k+1)*a, b)) = RemoveFirstBlack((k+1)*a*black + b*white) = RemoveFirstBlack((2(p+1)(2n+1))*black + b*white) = RemoveFirstBlack(2(p+1)*a*black + b*white) = 0?
在此先感谢您的任何指点!