1

假设计算机扮演 C 而对手扮演 O。机器人必须足够聪明才能在有机会时获胜。X 代表一个未被占用的单元格。还假设计算机迈出了第一步

例如:

Input1
CCX
XOX
OXX

Output1
CCC
XOX
OXX 

我想知道的是如何解决这个问题。是否有特定的算法可以遵循?如果是,请向我澄清!

4

2 回答 2

4

使用极小极大算法

一旦实现,定义一个简单的启发式或评估函数。它可能是这样的:

function scoreBoard(board) {
  if(board.isWin()) {
    return 1;
  }
  else if(board.isTie()) {
    return 0;
  }
  else {
    return -1;
  }
}
于 2013-08-28T05:59:32.503 回答
2

您正在寻找的是 Minimax 算法。您可以在此处找到详细信息:http ://en.wikipedia.org/wiki/Minimax

该算法背后的想法是生成所有可能的状态,假设计算机是智能的并选择最佳移动(最大化其增益)。您的举动应尽量减少计算机的增益。

于 2013-08-29T09:08:22.313 回答