Skip to content

print

原始文件为 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;
}