023-8皇后问题-回溯法-《算法设计技巧与分析》M.H.A学习笔记

8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

 

算法分析:

利用回溯法在最坏的情况下,需要On2),而用蛮力测试所有排列需要On!)。

 

在下面的迭代算法的伪代码中,我们用c[k]=x表示第k行得到皇后放在第x列。

伪代码:

 023-8皇后问题-回溯法-《算法设计技巧与分析》M.H.A学习笔记_第1张图片

递归算法

C++代码:

void backtrack(int t)
{
    if(t>num) //num为皇后的数目
    {
        sum++;//sum为所有的可行的解
        for(int m = 1;m


你可能感兴趣的:(算法设计技巧与分析)