中国象棋程序[3]

//负极大值搜索算法,递归的妙用

short Eval()
{
    ……//根据棋子的位置赋予价值
}

const int Maxdeepth =?;//自行设置
int NegaMaxSearch(int depth)
{
    int best,value;
    move movearray[128];//保存走法
    move mv;
    best =-MaxValue;//初始化成无穷大

    if(depth ==0)
        return Eval();
    int num =GenAllMove();//每一层走法总数
    for (int i = 0; i value =-NegaMaxSearch(depth -1);//层数-1
        UnMakeMove();
        if(value >best)
        {
            best =value;
            if(depth ==Maxdeepth)
             bestmove =mv; 
        }
    }
    return best;
}

分析:不断调用自身,不断产生for循环的for循环;

你可能感兴趣的:(数据结构和算法)