【LeetCode热题100】【回溯】N皇后

题目链接:51. N 皇后 - 力扣(LeetCode)

经典问题,N个皇后,N×N棋盘,直线上不能有多个皇后,找摆法

我们一层一层来摆,这样后面的层因为没有摆,所以判断冲突的时候不需要考虑后面的层,并且这层摆了一个就摆下一层,所以水平方向不需要判断冲突

因此需要写一个判断冲突的函数,判断当前位置往上,往左上,往右上有没有冲突

深度遍历回溯查找可行方案

class Solution {
public:
    vector<vector<string> > ans;
    vector<string> an;
    int n;

    bool isValid(int i, int j) {
        for (int k = 0; k < i; ++k) // 竖直方向
            if (an[k][j] == 'Q')
                return false;
        for (int x = i, y = j; x >= 0 && y >= 0; --x, --y) // 左斜向上
            if (an[x][y] == 'Q')
                return false;
        for (int x = i, y = j; x >= 0 && y < n; --x, ++y) // 右斜向上
            if (an[x][y] == 'Q')
                return false;
        return true;
    }

    void dfs(int level) {
        if (level == n) {
            ans.push_back(an);
            return;
        }
        for (int i = 0; i < n; ++i) {
            if (isValid(level, i)) {
                an[level][i] = 'Q';
                dfs(level + 1);
                an[level][i] = '.';
            }
        }
    }

    vector<vector<string> > solveNQueens(int n) {
        this->n = n;
        an.assign(n, string(n, '.'));
        dfs(0);
        return ans;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/548543.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue+Mysql的论坛管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

图深度学习(一):介绍与概念

目录 一、介绍 二、图的数据结构 三、图深度学习的基本模型 四、图深度学习的基本操作和概念 五、训练过程 六、主要应用场景 七、总结 一、介绍 图深度学习是将深度学习应用于图形数据结构的领域&#xff0c;它结合了图论的概念和深度学习的技术&#xff0c;用以处理和…

刷新认知,Python中循环结构可以这么简单?

应用场景 我们在写程序的时候&#xff0c;一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球&#xff0c;如果机器人持球而且还没有进入射门范围&#xff0c;那么我们就要一直发出让机器人向球门方向移动的指令。 在这个场景中&#xff0c;让机器人向…

大数据建模理论

文章目录 一、数仓概述1、数据仓库概念1.1 概述1.2 数据仓库与数据库的区别1.3 技术选型和架构 2、数仓常见名词2.1 实体2.2 维度2.3 度量2.4 粒度2.5 口径2.6 指标2.7 标签2.8 自然键/持久键/代理键2.9 退化维度2.10 下钻/上卷2.11 数据集市 3、数仓名词之间关系3.1 实体表&am…

这个项目我投了,给 OceanBase 数据库诊断提提速!

1. 前言 昨天晚上公司内部直播分享了一下OceanBase敏捷版诊断工具obdiag&#xff0c;主要的目的是拉齐一下前线和后端开发人员的诊断OceanBase问题的信息&#xff0c;众人拾柴火焰高&#xff0c;大家一起把obdiag做起来。晚上回去想了想&#xff0c;obdiag既然是开源项目&…

SiLM5350系列带米勒钳位的单通道隔离驱动器 助力汽车与工业应用实现稳定与高效的解决方案

带米勒钳位的隔离驱动SiLM5350系列 单通道 30V&#xff0c;10A 带米勒钳位的隔离驱动 具有驱动电流更大、传输延时更低、抗干扰能力更强、封装体积更小等优势, 为提高电源转换效率、安全性和可靠性提供理想之选。 SiLM5350系列产品描述&#xff1a; SiLM5350系列是单通道隔离驱…

[入门]测试原则-ApiHug准备-测试篇-002

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace 写在前面…

GT资源-CPLL QPLL

一、前言 QPLL与CPLL是两种为GT Channel提供时钟的锁相环&#xff0c;其中CPLL与GT Channel绑定&#xff0c;每一个通道都有一个CPLL&#xff0c;而QPLL是与Quad绑定&#xff0c;每一个Quad有一个QPLL&#xff0c;4个通道共享一个QPLL 二、CPLL 每个GTX/GTH收发器通道包含一…

luigi,一个超级厉害的 Python 库!

什么是 Python Luigi&#xff1f; Python Luigi 是一个用于构建复杂数据处理管道&#xff08;工作流&#xff09;的Python模块。Luigi由Spotify开发并维护&#xff0c;旨在简化和管理大规模数据处理任务的执行。 关键特点包括&#xff1a; 1.任务定义&#xff1a; Luigi允许…

TypeError: Cannot read properties of undefined (reading ‘tapAsync‘)

项目启动&#xff0c;一直报tabAsync未定义&#xff0c;整个项目中没有找到引用的地方&#xff1b; 最终重新安装webpack4版本 解决问题&#xff1b; npm install webpack4

【重回王座】ChatGPT发布最新模型gpt-4-turbo-2024-04-09

今天&#xff0c;新版GPT-4 Turbo再次在大型模型排行榜上荣登榜首&#xff0c;成功超越了此前领先的Claude 3 Opus。另外&#xff0c;新模型在处理长达64k的上下文时&#xff0c;性能竟能够与旧版在处理26k上下文时的表现相当。 目前GPT-4 Turbo仅限于ChatGPT Plus的用户&…

苍穹外卖项目总结1-12

苍穹外卖 文章标题地址苍穹外卖Day01——总结1https://lushimeng.blog.csdn.net/article/details/135466359苍穹外卖Day02——总结2https://lushimeng.blog.csdn.net/article/details/135484126苍穹外卖Day03——总结3https://lushimeng.blog.csdn.net/article/details/1363788…

PyTorch与深度学习:探索现代神经网络的魅力

在科技飞速发展的今天&#xff0c;深度学习作为人工智能领域的重要分支&#xff0c;已经在图像识别、自然语言处理、语音识别等多个领域取得了突破性的进展。而PyTorch&#xff0c;作为一款开源的深度学习框架&#xff0c;以其简洁易用、动态计算图等特性&#xff0c;赢得了广大…

修改百度百科的条件

百度百科&#xff0c;作为全球最大的中文百科全书&#xff0c;每天吸引着无数用户前来浏览和编辑。然而&#xff0c;要修改百度百科的内容&#xff0c;并非易事。本文将详细介绍修改百度百科的条件&#xff0c;帮助有志于参与编辑的用户更好地了解并做好准备。 1. 注册百度账号…

2024 计算机毕业设计之SpringBoot+Vue项目合集(源码+L文+PPT)

各位朋友大家好&#xff0c;有幸与屏幕前你们相识&#xff0c;博主现已经搬砖9年&#xff0c;趁着头发还充裕&#xff0c;希望给大家提供一些编程领域的帮助&#xff0c;深知计算机毕业生这个阶段的崩溃与闹心&#xff0c;让我们共同交流进步。 博主给大家列举了项目合集&#…

Springboot+Vue项目-基于Java+MySQL的房产销售系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

【从浅学到熟知Linux】进程控制上篇=>进程创建、进程终止与进程等待(含_exit与exit的区别、fork函数详解、wait与waitpid详解)

&#x1f3e0;关于专栏&#xff1a;Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 进程创建fork函数写时拷贝 进程退出进程退出操作系统做了什么&#xff1f;进程退出场景进程退出的常见方法…

Vue3 + Element-Plus 使用 Table 预览图片发生元素遮挡

Vue3 Element-Plus 使用 Table 预览图片发生元素遮挡 问题代码问题重现解决方法最终效果 问题代码 <el-table-column label"视频" align"center"><template #default"scope" style"display: flex;"><div style"…

【RV1106的ISP使用记录之基础知识】硬件连接关系与设备树的构建

RV1106具备2个mipi csi2 dphy硬件&#xff0c;1个VICAP硬件和1个ISP硬件。其中&#xff1a; 1、mipi csi2 dphy 用于对数据流的解析&#xff0c;支持MIPC,LVDS,DVP三种接口&#xff1b; 2、VICAP用于数据流的捕获&#xff1b; 3、ISP用于对图像数据进行处理&#xff1b; 这三个…

架构设计-灰度发布系统架构设计

灰度发布的定义 互联网产品需要快速迭代开发上线&#xff0c;又要保证质量&#xff0c;保证刚上线的系统&#xff0c;一旦出现问题可以很快控制影响面&#xff0c;就需要设计一套灰度发布系统。 灰度发布系统的作用&#xff0c;可以根据配置&#xff0c;将用户的流量导到新上…