蓝桥杯--N皇后问题

在了解N皇后问题之前我们先看一下,一个古老而著名的问题:

八皇后问题

        该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击 (同一行、同一列、同一斜线上的皇后都会自动攻击), 问有多少种摆法?

N皇后问题

        N皇后问题是八皇后问题的推广,即在一个NxN的棋盘上放置N个皇后,使其不能互相攻击 (同一行、同一列、同一斜线上的皇后都会自动攻击) 那么问,有多少种摆法?

        不管是N皇后还是八皇后甚至于之后的2N皇后都是很经典的递归、回溯问题

今天打算从新回顾一下皇后问题,所以在此留下笔记,本人愚钝,若行文有误望谅解。

具体思路:

        首先确定放的方式,我在这里放的方式就是我们惯性思维的放置,先放第一行,再放第二行,再放第二行.....

        然后就是细化每一步放置的操作,每一步放置的操作其实有2个:

                1、判断这一行中有没有符合放置条件的位置(在不在同一行、在不在同一列、在不在对角线)所以在这里我就必须得到所有已经放置的皇后的位置(也就是第二步中记录下来的位置数组)

                2、进行放置,放置的操作我们可以理解为两个步骤,第一个是记录下当前位置(这里我用了两个数组存放已经放置的皇后的行和列),第二就是进行下一个皇后的放置(这里就可以进入下一个递归)

        最后就是递归的结束条件,因为我是按照每一行放

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值