原始文件为 cpp 代码,本文是转换后的 Markdown 文件。
for(int j = 0; j < 3; ++j) {
rote(i, j);
if(step & 1) {
alpha = max(alpha, dfs(sum + cnt(i, j), step + 1, alpha, beta));
} else {
beta = min(beta, dfs(sum + cnt(i, j), step + 1, alpha, beta));
}
rerote(i, j);
if(beta <= alpha) break;
}
bool MaxSearch(int A,int B)
{
if(A>=5) return true;
if(B>=5) return false;
if(edge==18) return A>B;
for(int i=1;i<=18;i++)
if(!edges[i])
{
edges[i]=true; edge++;
int nt=Num(); bool tmp;
if(nt>A+B) tmp=MaxSearch(nt-B,B); //三角形变多了
else tmp=MinSearch(A,B);
edges[i]=false; edge--;
if(tmp==true) return true;
}
return false;
}
bool MinSearch(int A,int B)
{
if(A>=5) return true;
if(B>=5) return false;
if(edge==18) return A>B;
for(int i=1;i<=18;i++)
if(!edges[i])
{
edges[i]=true; edge++;
int nt=Num(); bool tmp;
if(nt>A+B) tmp=MinSearch(A,nt-A); //再走一次
else tmp=MaxSearch(A,B);
edges[i]=false; edge--;
if(tmp==false) return false;
}
return true;
}