algorithm - 如何使用曼哈顿距离来解决这个游戏?

标签 algorithm dynamic-programming nim-game

每位玩家轮流从装有 50 根香蕉的篮子中取出 1 或 2 根香蕉。清空篮子的玩家获胜。

距离应该使用什么权重,矩阵大小应该是多少?每次有人移动时矩阵都应该改变吗?玩家 1 的移动应该是水平的,而玩家 2 的移动应该是垂直的吗?

感谢阅读

最佳答案

我不确定您为什么特别想对这个谜题使用动态规划和/或曼哈顿距离。这是一款您可以找到固定解决方案的游戏。

如果你先走,有3个香蕉,不管你怎么玩,我赢。你选一个,我选两个,反之亦然。如果有 6 个香蕉,同样的逻辑允许我将游戏减少到 3 个香蕉的情况。事实上,对于任何 3n 个香蕉,我都可以将游戏减少到 3(n-1) 个香蕉。如果香蕉的数量不是三的倍数,那么你可以让它成为三的倍数(通过移除一个或两个香蕉),并确保胜利。

对于 k 个香蕉,您总是删除 k % 3。如果 k % 3 == 0,除非对手失误,否则你就输了,所以随心所欲。就是这样。

关于algorithm - 如何使用曼哈顿距离来解决这个游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44746241/

相关文章:

java - 重新排列项目而不改变所有项目的排名

algorithm - 一个数字作为叶节点出现了多少次?

algorithm - 如何创建 URL 缩短器?

algorithm - 如何为 Min-Max 算法编写分析函数?

algorithm - 最大 K 个子数组和

r - 根据 R 中的列表长度动态创建嵌套的 FOR 循环

java - 使用蛮力方法在列表中查找最长的非递减子集?

javascript - 21 计数游戏(像 nim 游戏)

algorithm - 加权 Nim 是堆叠而不是堆叠,每个玩家从相反的方向挑选