LeetCode 51. N皇后 / 52. N皇后 II(回溯)

1. 题目

n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
在这里插入图片描述
上图为 8 皇后问题的一种解法。

给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。

每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。

示例:
输入: 4
输出: [[".Q..",  // 解法 1"...Q","Q...","..Q."],["..Q.",  // 解法 2"Q...","...Q",".Q.."]
]
解释: 4 皇后问题存在两个不同的解法。
  • LeetCode 52题,类似要求的是方案数,不用枚举出来。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/n-queens
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

可参考:回溯算法(Backtracking Algorithm)之八皇后问题

class Solution {vector<vector<string>> ans;int N;
public:vector<vector<string>> solveNQueens(int n) {vector<string> map(n,string(n,'.'));N = n;dfs(map,0);return ans;}void dfs(vector<string>& map, int x){if(x == N){ans.push_back(map);return;}for(int i = 0; i < N; ++i){if(isok(map,x,i)){map[x][i]='Q';dfs(map,x+1);map[x][i]='.';}}}bool isok(vector<string>& map, int i, int j){int delta = 1;while(i-1 >= 0){if(map[i-1][j]=='Q')//竖直方向return false;if(j-delta>=0 && map[i-1][j-delta]=='Q')return false;//左45度if(j+delta<N && map[i-1][j+delta]=='Q')return false;//右45度i--;//向上查找delta++;//45度增量}return true;}
};

在这里插入图片描述

class Solution {int sum = 0;
public:int totalNQueens(int n) {vector<string> map(n,string(n,'.'));for(int i = 0; i < n; ++i){map[0][i]='Q';dfs(map,0,i,n);map[0][i]='.';}return sum;}bool isok(vector<string>& map, int x, int y, int &n){int i = 1, j = y;while(x >= 1)//向上遍历,看冲突不{if(map[x-1][j]=='Q')//竖直方向return false;if(j-i>=0 && map[x-1][j-i]=='Q')//左45度return false;if(j+i<n && map[x-1][j+i]=='Q')//右45度return false;i++;//45度张角x--;//往上找}return true;}void dfs(vector<string>& map, int x, int y, int& n){if(x==n-1)sum++;for(int i = 0; i < n; ++i){   //x+1下一行if(x+1 < n && isok(map,x+1,i,n)){map[x+1][i] = 'Q';dfs(map, x+1, i, n);map[x+1][i] = '.';}}}
};

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的新书《Spring Cloud实战》预告

从去年6月开始编写《Spring Cloud构建微服务架构》系列博文开始&#xff0c;受到了不少同行的关注与支持。随后也开通了多个交流群、创建了相关的论坛&#xff08;http://bbs.springcloud.cn&#xff09;&#xff0c;虽然Spring Cloud在国内变得越来越火热&#xff0c;但是这一…

GPT-3 泄露了我的真实姓名

文 | 天于刀刀世界上总有这么一群人&#xff0c;他们是高智商科技狂&#xff0c;是新时代技术热点的弄潮儿&#xff0c;更是充满神秘感潜藏在里世界默默注视着时代发展的极客。而 Hacker News 这一网站致力于提供最新国际威胁情报、黑客动向以及维基解密资讯&#xff0c;让我们…

Gmail的另类浏览法--RSS

RSS 眼下大行其道&#xff0c;虽然RSS在技术上没有什么最尖端、最高新的突破&#xff0c;不过是对信息的时序做了一些处理&#xff0c;但很恰当地调整了人们获取信息的方式&#xff0c;使得信息的获得变得集中、主动和异步。 集中&#xff1a;可供订阅的聚合一般都是某个主题相…

LintCode 1210. 升序子序列(DFS)

1. 题目 给定一个整数数组&#xff0c;找到所有不同的可能的升序子序列&#xff0c;一个升序子序列的长度至少应为2。 例1: 输入: [4,6,7,7] 输出: [[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]例2: 输入: [65,21,-44,31,-8] 输出: [[-44,-8],[-44,31],[21,…

GPT3=魔鬼搜索引擎?从一个隐私血案说起...

世界上总有这么一群人&#xff0c;他们是高智商科技狂&#xff0c;是新时代技术热点的弄潮儿&#xff0c;更是充满神秘感潜藏在里世界默默注视着时代发展的极客。而 Hacker News 这一网站致力于提供最新国际威胁情报、黑客动向以及维基解密资讯&#xff0c;让我们得以一窥这个灰…

Spring Cloud构建微服务架构(五)服务网关

通过之前几篇Spring Cloud中几个核心组件的介绍&#xff0c;我们已经可以构建一个简略的&#xff08;不够完善&#xff09;微服务架构了。比如下图所示&#xff1a; 我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现&#xff1b;而服务间通过Ribbo…

去除任务栏的图标

这次我要对付的软件是一个比较好用的代理软件(我不知道这样文章要不要隐藏文件名称),算法大家已经分析很多次了,我就不再重复了. 我这里来讨论一个实际应用的问题:如果你想用别人的机器上网而又不想让他轻易的发现(好像这样的想法大家都有吧?).而这个软件在启动之后 会在任务栏…

LintCode 1353. 根节点到叶节点求和(DFS)

1. 题目 给定仅包含来自0-9的数字的二叉树&#xff0c;每个根到叶路径可以表示数字。 举个例子&#xff1a;root-to-leaf路径1-> 2-> 3&#xff0c;它代表数字123&#xff0c;找到所有根到叶的数的总和 样例1 输入: {1,2,3} 输出: 25 解释:1/ \2 3 路径 1->2 表示…

1 亿巨资开发的防疫 APP,两年多只找到 2 例确诊

源 | 观察者网2020 年 4 月&#xff0c;澳政府斥巨资打造防疫 APP“COVIDSafe”。两年多过去了&#xff0c;这款曾被寄予厚望、当作通向防疫成功“门票”的 APP 寿命将近&#xff0c;于当地时间 8 月 9 日宣布将在不久后停用。澳大利亚卫生部长巴特勒&#xff08;Mark Butler&a…

Sql 实现自动添加行数标记

select IDENTITY(int,1,1) as NameID,* into #t from MissionAssignView select * from #t order by NameID drop table #t 转载于:https://www.cnblogs.com/jhtchina/archive/2005/03/09/115532.html

Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库

在第2章节中&#xff0c;我们介绍了如何通过Spring Boot来实现HTTP接口&#xff0c;以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是&#xff0c;这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点&#xff0c;…

程序员面试金典 - 面试题 03.01. 三合一(数组栈)

1. 题目 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum 表示栈下标&#xff0c;value 表示压入的值。 构造函数会传入一个stackSize参数&#xff0c;代表每个栈的大小。 …

谷歌:级联语言模型是通用推理系统的未来

文 | ZenMoore前言相信每个 NLPer 心中都有对 Reasoning 的一片期冀。当初笔者进入 NLP 的大门&#xff0c;就是相信&#xff1a;由于语言强大的表达能力以及语言模型强大的建模能力&#xff0c;Reasoning 一定就在不久的将来&#xff01;可惜实际情况却是......[流泪]直到我看…

Hibernate+mysql 中文问题解决方案.

1, mysql安装时设置字符集utf-8, jdbc驱动3.0.15以上. 2. hibernate配置文件中,加上属性 <property name"connection.useUnicode">true</property> <property name"connection.characterEncoding">UTF-8</property> 3. web.xml设置…

Spring Boot 2.x基础教程:Swagger静态文档的生成

前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后&#xff0c;我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了。如果您还不熟悉这块&#xff0c;可以先阅读&#xff1a; Spring Boot 2.x基础教程&#xff1a;使用Swagger2构建强大的API文档Sprin…

LintCode 802. 数独(回溯)/ LeetCode 37. 解数独

1. 题目 编写一个程序&#xff0c;通过填充空单元来解决数独难题。 空单元由数字0表示。 你可以认为只有一个唯一的解决方案。 LeetCode 37 题类似&#xff0c;把 int 改成 char&#xff0c;注意转换 2. 解题 行、列、小9宫格内 1-9 都只出现一次暴力回溯&#xff0c;坐标转…

完爆GPT3、谷歌PaLM!检索增强模型Atlas刷新知识类小样本任务SOTA

文 | 小戏不知不觉间&#xff0c;大模型小样本成为了小样本学习领域的主流打法&#xff0c;在许多的任务背景下&#xff0c;一套通用的思路是先标注小数据样本&#xff0c;再从预训练大模型的基础上使用小数据样本进行训练。尽管如我们所见&#xff0c;大模型在一众小样本学习的…

简单的分页类

<% LanguageVBScript %><% Option Explicit %><SCRIPT LANGUAGEVBScript RUNATSERVER> 确保引用 ADO Typelib 或使用 ADOVBS.Inc Dim iPageNum, iRowsPerPage Main Sub Main() Dim rst Dim sSQL, sConnString If Request.QueryString("iPageNu…

开源:Swagger Butler 1.1.0发布,利用ZuulRoute信息简化配置内容

Swagger Butler是一个基于Swagger与Zuul构建的API文档汇集工具。通过构建一个简单的Spring Boot应用&#xff0c;增加一些配置就能将现有整合了Swagger的Web应用的API文档都汇总到一起&#xff0c;方便查看与测试。 项目地址 Github&#xff1a;https://github.com/dyc87112/…

LeetCode 10. 正则表达式匹配(递归/DP)

文章目录1. 题目2. 解题2.1 递归2.2 DP1. 题目 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不…