给定的是一排最多30块石头,可以是黑色的,也可以是白色的。比赛开始时不允许有空隙,但可以少于30块石头。
我们的目标是清除所有的石头只有黑色的石头才能被移除,如果一块石头被移除,它的邻居就会改变颜色。如果被移走的石头在中间,这就产生了一个不能再填满的空隙;石头被移走后,石头的邻居们就不被认为是邻居们了。
现在,我已经创建了一个程序,解决这个游戏使用暴力。我的结论是,只有当有黑石存在(显然)并且黑石的数量是奇数时,这个游戏才是可解的。此外,如果黑石的数目是奇数,则可以通过递归地移除该行的第一块黑石来解决该游戏。
我的问题是我不能证明这个条件,即黑石的数量必须是奇数,并且移除第一块石头将解决游戏。我怎样才能正确地证明这个算法呢?
我已经试过用感应法了,但是我被卡住了:
行(a,b)=a*黑色+b*白色
RemoveFirstBlack(行(1,b))=RemoveFirstBlack(黑色+B*白色)=0(如果a=1或n=0,其中a=2n+1和n为整数)
假设removeFirstBlack(行(k*a,b))=removeFirstBlack(k*a*黑色+b*白色)=0,k=2p+1
一个整数。
RemoveFirstBlack(行((k+1)*a,b))=RemoveFirstBlack((k+1)*a*黑色+b*白色)=
RemoveFirstBlack((2(p+1)(2n+1))*黑色+b*白色)=RemoveFirstBlack(2(p+1)*a*黑色+b*白色)=0?
提前感谢你的指点!
最佳答案
假设我们有一个不需要拆分组就可以求解的stone组(如果必须拆分组,那么实际上有两个不需要拆分的组)。要从组中移除的最后一块石头必须是单个黑色[B]。只有通过[WB]才能到达[B],没有其他方法要到达[WB],您需要[BBB]或[WWB]。从这里模式出现了。到达[xxW]的唯一途径是通过[xxBB],到达[xxB]的唯一途径是通过[xxWB]在所有这些转换中奇偶性保持不变,并且黑石的最终数目是奇数(1),因此单个不可分割组的奇偶性必须是奇数。
假设解决方案要求将一个组拆分为两个不可拆分的子组。我们已经得出结论,这两个子群必须有奇偶性。如果我们排除将向新州过渡的黑石,这两个群体实际上拥有偶数个黑人如果我们加上它们,再加上黑石,我们就可以得出结论,一个通过把它分成两个不可分割的组来求解的组,也必须有奇数个黑石。
通过对单分裂群的归纳,我们可以得出结论,任何群都必须有奇数个黑人。
原问题的解决不需要暴力。就挑你来的第一块黑石头。