Minimax算法被广泛应用在棋类游戏中,是一种找出失败的最大可能性中的最小值的算法(Wikipedia)。
博弈树问题
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <limits>
//定义Game类
class Game
{
// 定义枚举数据类型Player
enum class Player
{
none = '-',
human = 'X',
computer = 'O'
};
// 定义结构体Move
struct Move
{
// unsigned(无符号),表明该类型是无符号数,和 signed 相反。
unsigned int x = 0;
unsigned int y = 0;
};
// 定义棋盘大小为3*3
Player board[3][3];
public:
Game()
{
for (unsigned int i = 0; i < 3; i++)
{
for (unsigned int j = 0; j < 3; j++)
{
// 从Player枚举类型中获取none填充到board,意思是整个棋盘没有棋子的地方全是“-”
board[i][j] = Player::none;
}
}
}
//打印棋盘
void printBoard()
{
std::cout << "+-----------------+";
for (unsigned int i = 0; i < 3; i++)
{
//换行
std::cout << "\n|";
for (unsigned int j = 0; j < 3; j++)
{
//C++ setw() 函数用于设置字段的宽度,语法格式如下
// 打印
std::cout << std::setw(3) << static_cast<char>(board[i][j]) << std::setw(3) << " |";
}
}
std::cout << "\n+-----------------+\n";
}
//判断是否存在空位
bool isTie()