现在的位置: 首页 > 综合 > 正文

八皇后问题(回溯法)

2018年07月05日 ⁄ 综合 ⁄ 共 2187字 ⁄ 字号 评论关闭

这种非递归方法还是比较容易理解的

 

另外还有递归方法,先来看一下递归算法的伪代码

void trial(int row)

{

     //递归时候,我们从第0行开始,然后每次递归时候,都向下一行,一直到棋盘的最后一行

     //这时候就表示已经是正确的解了,所有进入该函数首先判断是否是正确的解

     if(row>N)

    {

         //输出此时的棋盘

    }

    else

    {

        for(int i=0;i<N;++i)

        { 

             //不是解,这时候需要在本行的每一列开始试探放旗子,如果可以的话继续向下递归

             #修改记录冲突的数组

              if(放在这个位置不会冲突)

             {

                     trial(row+1);

             }

             放在这里冲突,那么修改回记录的数组,继续下一列

        }

     }

}

 

下面给出递归的

查看源代码示例

查看源代码示例
【上篇】
【下篇】

抱歉!评论已关闭.