蓝桥杯--N皇后问题

本文介绍了N皇后问题,包括八皇后问题的背景,以及N皇后问题的递归和回溯解决策略。作者通过放置皇后的方式,详细阐述了判断和放置的逻辑,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

八皇后问题

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

N皇后问题

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

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

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

具体思路:

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值