算法————皇后问题(回溯法)

本文详细分析了n皇后问题的解决策略,通过回溯法来放置皇后。在8*8的棋盘上,每行的皇后选择受到前一行的影响,当某行放置错误时,需要回溯至上一行调整。代码实现中,使用一维数组表示皇后的位置,并通过判断皇后放置的合法性(不同列、不同对角线)以及回退控制来逐步完成所有皇后的放置。
关于问题的描述:n皇后问题是
来源于国际象棋中的皇后,通常叫8皇后问题,即在N*N的棋盘上,放置N个皇后,要求每一横行,每一列,每一对角线上均只能放置一个皇后,求可能的方案及方案数。

下面对n皇后问题进行分析:

1.一下是一个8*8的棋盘,从第一行开始放皇后,第一行皇后可以任意放,但每一行的方法都会影响后面的皇后放置


2.当第一行放好之后开始放的第2,3,4,5,6,7,8;但第一行会影响第二行,第二行会影响第三行的放置,第三行会影响的四行的放置.........

3.就这样在每一行的皇后可以有8种选择,但合法的是固定的,所以当本行出错时就得返回上一行检查或从新放置,如果上一行没有位置可行时,就得继续返回....一直返回知道返回第一行时,说明第一个皇后放在第一行不合适,然后到下一个位置,直到合适为止。

4.第一行放好继续放第二行,当某一行出错时,回退到上一行,直到放好然后继续往下进行,直到放置到最后一行结束。

代码实现思路:

   一:判断皇后放置位置合法性

    1.采用一维数组的下标表示第n个皇后(等同于第n行的皇后),数组元素为皇后的所在列。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值