力扣--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"]]

提示:

  • 1 <= n <= 9

该问题为典型的回溯问题,来看看代码吧

class Solution {
public:
void put_queen(int x,int y,vector<vector<int>>&attack)//x,y分别表示传进去的行和列,attack数组表示该行皇后可以攻击到的位置
{static const int dx[]={-1,1,0,0,-1,-1,1,1};static const int dy[]={0,0,-1,1,-1,1,-1,1};attack[x][y]=1;for(unsigned int i=1;i<attack.size();i++){for(int j=0;j<8;j++){unsigned int nx=x+i*dx[j];unsigned int ny=y+i*dy[j];if(nx>=0&&nx<attack.size()&&ny>=0&&ny<attack.size()){attack[nx][ny]=1;}}}
}
//line表示当前处理的行,n表示N皇后问题,queen数组表示皇后存储的位置,attack表示皇后攻击的位置,re表示存储N皇后的全部解法
void backtrack(int line,int n,vector<string>&queen,vector<vector<int>>&attack,vector<vector<string>>&re)
{if(line==n){re.push_back(queen);return;}for(int i=0;i<n;i++){if(attack[line][i]==0){vector<vector<int>> temp=attack;queen[line][i]='Q';put_queen(line,i,attack);backtrack(line+1,n,queen,attack,re);attack=temp;queen[line][i]='.';}}
}vector<vector<string>> solveNQueens(int n) {vector<vector<string>> re;//存储最终结果vector<vector<int>> attack;//标记皇后攻击位置vector<string>queen;//保存皇后位置for(int i=0;i<n;i++){attack.push_back((std::vector<int>()));for(int j=0;j<n;j++)attack[i].push_back(0);queen.push_back("");queen[i].append(n,'.');}backtrack(0,n,queen,attack,re);return re;}
};

这里我把题目链接贴上供各位查看

https://leetcode.cn/problems/n-queens/

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

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

相关文章

【LLMOps】小白详细教程,在Dify中创建并使用自定义工具

文章目录 博客详细讲解视频点击查看高清脑图 1. 搭建天气查询http服务1.1. flask代码1.2. 接口优化方法 2. 生成openapi json schema2.1. 测试接口2.2. 生成openapi schema 3. 在dify中创建自定义工具3.1. 导入schema3.2. 设置工具认证信息3.3. 测试工具 4. 调用工具4.1. Agent…

C++实战演练---负载均衡在线oj项目预热

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 前言 学习准备了快一年时间&#xff0c;心心念念的实战演练终于可以开始了&#xff0c;话不多说&#xff0c;直接进入主题…

使用streamlit构建网站

1.目的 最近团队有一个人脸识别的项目&#xff0c;想做一个网站界面来演示&#xff0c;同时使用了花生壳进行内网穿透&#xff0c;使得可以在其他设备访问该界面。 2.算法部分 import os os.environ[TF_CPP_MIN_LOG_LEVEL] 2 import matplotlib as mpl mpl.use(TkAgg) impo…

AI大模型探索之路-训练篇4:大语言模型训练数据集概览

文章目录 前言一、常用的预训练数据集1、网页2、书籍3、维基百科4、代码5、混合型数据集 二、常用微调数据集1、指令微调数据集1.1 自然语言处理任务数据集1.2 日常对话数据集1.3 合成数据集 2、人类对齐数据集 前言 在人工智能领域&#xff0c;构建强大的AI系统的关键步骤之一…

RTU遥测终端为城市排水安全保驾护航!

近年来&#xff0c;全球气候变迁与城市化进程不断加速&#xff0c;导致强降雨事件频发&#xff0c;道路低洼地带、下穿式立交桥和隧道等区域在暴雨中常易积水&#xff0c;严重阻碍了人民的出行&#xff0c;甚至危及生命与财产安全。而传统的排水管网管理方式已难以适应现代城市…

干货 :医疗企业渠道管理实战手册:策略、平台建设、CRM解决方案

最近与同行交流&#xff0c;对方调侃道&#xff1a;人形机器人和老头乐&#xff0c;应该也算医疗器械&#xff0c;是服务老人居家和出行的产品。确实&#xff0c;未来中国老龄化加重&#xff0c;医疗器械行业&#xff0c;也会注入新的增长动力。 长期以来&#xff0c;医疗器械…

用Vue做一个待办事项

这个待办事项有以下功能&#xff1a;增删查&#xff0c;既新增待办事项&#xff0c;删除待办事项&#xff0c;查看全部&#xff0c;未完成&#xff0c;完成待办事项&#xff0c;当鼠标移动到待办事项上时会显示删除按钮 分为四个部分来实现&#xff1a;ToDoHeader.vue、ToDoMai…

yudao-cloud微服务系统系统模块+后台管理系统成功运行

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 第一章 芋…

Covalent Network(CQT)近三个月代币回购超 10 万美元

Covalent Network&#xff08;CQT&#xff09;报告了其代币回购计划的显著增长&#xff0c;自 2024 年 1 月底启动以来&#xff0c;已从公开市场回购了价值超过10万美元的 CQT 代币。该机制通过 Covalent Network&#xff08;CQT&#xff09;的 API 收入来回购 CQT 代币&#x…

大数据计算引擎中的Calcite

1.Calcite介绍 Calcite是一个动态数据库管理框架&#xff0c;具备数据库管理系统的功能 Calcite具备SQL解析、校验、优化、生成、连接查询等功能 Calcite能够为不同平台和数据源提供统一的查询引擎 2.Calcite能力 比如&#xff0c;对于HBase而言&#xff0c;没有SQL查询的能力…

【java】hashCode 方法

HashSet HashSet 是一个集合&#xff0c;该集合的作用是去重。 import java.util.HashSet; public class Test {public static void main(String[] args) {HashSet hashSet new HashSet();People people1 new People();People people2 new People();hashSet.add("hel…

大模型提示工程(Prompt)(上篇),掌握Prompt原理与技巧,提高AI生成内容质量

我们了解到&#xff0c;现在的大模型&#xff0c;基本都是基于transformer的GPT模型&#xff0c;以ChatGPT为例&#xff0c;之前我们提到了&#xff0c;它是一种基于GPT模型的对话生成模型&#xff0c;它可以让计算机自动学习对话语料库中的模式&#xff0c;并生成连贯、自然的…