状态压缩+博弈+搜索
我先把棋局按照3进制压缩为一个整数,用这个整数作为参数去搜索,比较简便
两个人都要按最优策略来,就是博弈,这道题就简单的标记下当前是哪个人走
是Alice就递归的选择接下来能得到的最大分数,Bob就是最小分数
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int p[12];
int judge(int d)
{
int a[10],t=0;
for(int i=8;i>=0;i--)
{
a[i]=d%3;
d/=3;
if(a[i]==0) t++;
}
if(a[0]==a[1]&&a[1]==a[2]&&a[2]==1||
a[3]==a[4]&&a[4]==a[5]&&a[5]==1||
a[6]==a[7]&&a[7]==a[8]&&a[8]==1||
a[0]==a[3]&&a[3]==a[6]&&a[6]==1||
a[1]==a[4]&&a[4]==a[7]&&a[7]==1||
a[