algorithm - 如何设计一种算法以(几乎)总是在 Kayles 游戏中获胜(正常游戏约定)
问题描述
我遇到了一个算法设计问题,它设计了一个算法(几乎)总是在 Kayles 游戏中获胜,即目标是如果一个人先赢,那么目标是总是赢,如果第二个赢,则有最好的机会赢。游戏规则是,一排瓶,每个瓶都有一个索引,两个玩家轮流击倒他们,一个玩家每回合可以击倒一个或两个瓶,如果有两个瓶要被被击倒,它们必须是相邻的,例如,如果有1、2、3、4四个引脚,2和3是倒下的,那么1和4不是相邻的,而是1和2, 2 和 3 等。击倒最后一个引脚的玩家获胜。
问题的提示是通过布尔数组表示引脚,输入可能包括对手最后一步的索引或索引。
我在网上做过一些关于这个游戏的研究,但目前我只知道先走的玩家总是可以赢的,方法是去掉中间的引脚,将引脚分成两组,然后在另一组中模仿对手的动作. 我也知道,如果一个是第二个,最好的策略是大致创建偶数组引脚,例如1101101110111
,它有两对组,然后在一对组中模仿对手的动作。但我不太确定如何从这里设计算法。
感谢您阅读这里!
解决方案
推荐阅读
- hyperledger-fabric - fabric-chaincode-go 和 fabric-contract-api-go 有什么区别?
- typescript - Typescript,Firebase:无法通过读取 nfc 标签 ID 的十六进制字符串将产品添加到购物车
- uwp - 将我的 UWP 应用设置为系统默认音乐播放器
- ssl - 为 keycloak-server 启用-ssl-https
- reactjs - 单击时返回 null 而不是对象
- c - 面对 C 语言中指针的一些困惑
- javascript - 将 CommonJS (CJS) 导入 ES Module (MJS) 导致“TypeError: module is not a function”错误
- c - AddressSanitizer: heap-buffer-overflow,我不明白它告诉我的问题在哪里
- amazon-web-services - 卷 IOPS、卷吞吐量 (MiB/s) 和网络 (Gbps) 的 CloudWatch 指标
- compiler-errors - 损坏的 Modelica.Fluid.Valves.ValveIncompressible 模型?收到错误“Function Utilities.regRoot2 not found in scope
"