码迷,mamicode.com
首页 > 其他好文 > 详细

回溯法——求解N皇后问题

时间:2014-10-25 23:05:14      阅读:407      评论:0      收藏:0      [点我收藏+]

标签:数学   八皇后   算法   软考   



问题描述

 

    八皇后问题是十九世纪著名数学家高斯于1850年提出的。问题是:在8*8的棋盘上摆放8个皇后,使其不能互相攻击,即任意的两个皇后不能处在同意行,同一列,或同意斜线上。可以把八皇后问题拓展为n皇后问题,即在n*n的棋盘上摆放n个皇后,使其任意两个皇后都不能处于同一行、同一列或同一斜线上。

 

 

问题分析

 

    我们以最简单的4皇后问题分析,显然,为了使皇后不相互攻击,首先考虑每一行只能放一个皇后,我们以X[1,2,3….N]代表此问题的解数组,X[N]代表在第N行第X[N]列放了一个皇后,例如,X[2]=1代表在第2行第1列放了一个皇后.然后考虑,在第X[k]位上,什么时候会出现皇后相互攻击的情况


bubuko.com,布布扣


问题解决


    大致描述:以四皇后为例,我们以一个表格来描述我们放置皇后的过程:


   bubuko.com,布布扣



     bubuko.com,布布扣


如上所示,一旦出现本行所有位置都不能放置皇后的情况时,我们要回溯到上一行,重新调整上一行的皇后的位置。



伪代码解读



       首先是判断是否可以放置皇后的代码:


bubuko.com,布布扣



 

      接下来是放置皇后的过程:


bubuko.com,布布扣


bubuko.com,布布扣






回溯法——求解N皇后问题

标签:数学   八皇后   算法   软考   

原文地址:http://blog.csdn.net/lhc1105/article/details/40457469

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!