N 皇后,LeetCode 51 题,用递归和回溯巧妙解出来
鲁迅曾说过,有一段时间没有刷二哥的 LeetCode 刷题笔记了,心里痒痒的,今天我们开始刷 N 皇后吧,这道题可有意思了,比天天背八股来得开心多了。
题意
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。
难度
困难
示例
示例 1:
输入:n = 4
输出:[
[".Q..",
"...Q",
"Q...",
"..Q."],
["..Q.",
"Q...",
"...Q",
".Q.."]]
解释:如上图所示,4 皇后问题存在两个不同的解法。
示例 2:
输入:n = 1
输出:[["Q"]]
分析
N 皇后是一道非常经典的递归+回溯题目,但是这并不意味着它就非常的难,相反,合理运用递归+回溯的知识,我们其实可以“不费吹灰之力”就解出这道题目(信心一定要足😄)。
我们知道,一个 皇后 能够攻击她所在的 行、列、斜线上的棋子,那我们就直接从第一行开始,逐行放置皇后,然后判断当前位置是否合法,如果合法,我们就继续放置下一个皇后,如果不合法,我们就回溯到上一步,重新放置皇后。
非常暴力,但很容易上手。
class Solution {
// 解决 N 皇后问题
public List
已加入星球,可直接知识星球授权登录
二哥编程星球目前包含:
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复