leetcode 51. N 皇后

2023-11-07

  1. N 皇后
    题目链接:N皇后

题目

在这里插入图片描述在这里插入图片描述

思路

用回溯方法,先构造出一个棋盘二维数组,每行选择一个位置放皇后Q,再不断回溯,
在这里插入图片描述

代码

class Solution {
vector<vector<string>> res;

    bool isN(vector<string> &path,int row,int col,int n)
    {   //只需要考虑row行以上的位置
        //看同一列的位置
        for(int i=0;i<row;i++)
        {
            if(path[i][col]=='Q') return false;
        }
        //右上角一斜线上的
        for(int i=row-1,j=col+1;i>=0&&j<n;i--,j++)
        {
           if(path[i][j]=='Q') return false;
        }
        //左上角一斜线上的
        for(int i=row-1,j=col-1;i>=0&&j>=0;i--,j--)
        {
            if(path[i][j]=='Q') return false;
            
        }
        return true;

    }

    void helper(int n,int row,vector<string> &path)
    {
        if(row==n) //n个皇后已经摆好一个棋盘,满足一个答案的条件
        {
            res.push_back(path);
            return;
        }
        for(int col=0; col<n; col++)
        {
            if(isN(path,row,col,n) )
            {
                path[row][col]='Q';//每行选择一个Q
                helper(n,row+1,path);
                path[row][col]='.';
            }
            
        }


    }

public:
    vector<vector<string>> solveNQueens(int n) {

     //第一种string构造方法
    string s1 ;
    for(int i=0;i<n; i++)
    {
        s1.push_back('.');
    }
    
    //string s1(n,'.'); //第二种构造string方法
    vector<string> path(n,s1);
    helper(n,0,path);
    return res;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode 51. N 皇后 的相关文章

  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • ChatExcel?

    大家好 我是章北海mlpy 最近在浅学LangChain 在大模型时代 感觉这玩意很有前途 LangChain是一个开源的应用开发框架 目前支持Python和TypeScript两种编程语言 它赋予LLM两大核心能力 数据感知 将语言模型与
  • 模版类运算符重载

    span style font size 18px 自定义分数模版类 运算符重载 同时支持宽字符 wchar t span span style font size 18px span span style font size 18px i
  • 链表(变形)

    单链表结点只有一个指向其后继的指针 使得单链表只能从头结点 依次顺序地向后遍历 要访问某个结点的前驱结点 delete insert 只能从头开始遍历 访问后继结点的时间复杂度为O 1 访问前驱结点的时间复杂度O n 一 双链表 双链表结点
  • oracle语句查询时间范围,oracle时间范围查询

    当时间精确到秒的指标和时间精确到日的时间进行对比是恒不等于的 但是可以判断大于或者等于的情况 举个例子 指标 时间精确到秒 select 时间精确到秒 from table where 时间精确到秒 lt to date 2013 11 2
  • 学校实训密码锁设计(基于STC51单片机)报告

    这里写目录标题 选题的背景与意义 项目内容 51密码锁设计 产品功能 方案设计 方案实施 元件选择 一 电流放大 二 偏置电路 三 开关作用 设计流程 代码 电路仿真 PCB打板 结论 选题的背景与意义 单片微型机简称单片机 它是在一片芯片
  • 时序预测

    时序预测 MATLAB实现基于QPSO LSTM PSO LSTM LSTM时间序列预测 目录 时序预测 MATLAB实现基于QPSO LSTM PSO LSTM LSTM时间序列预测 效果一览 基本描述 程序设计 参考资料 效果一览 基本
  • 如何管理和快速登录多台服务器(基于expect)

    背景 shell快速登录多个机器 平时需要经常切换多个机器 或者需要通过跳板机来回换登录机器 为了便于自己快速登录 和每次找机器 写了登录管理工具https github com cgpeter96 shell blob main logi
  • Unity--使用Line Renderer实现画图划线效果

    using UnityEngine public class Draw MonoBehaviour public GameObject linePrefab 线条渲染器 private LineRenderer line 顶点下标 priv
  • 2023-05-24 题目

    ArrayList源码分析 package java util import java util function Consumer import java util function Predicate import java util
  • Mac电脑远程访问pc端Microsoft Remote Desktop

    Microsoft Remote Desktop是Mac上的远程连接Windows电脑的工具 可以轻松使用应用程序和数据 进行视频和声音流改进的压缩和带宽使用 连接到多个显示器或投影机进行演示等 在弹出的对话框中 输入 Windows 实例
  • java初识之HelloWorld

    Hello World 随便新建一个文件夹 存放代码 新建一个java文件 1 文件后缀名为 java 2 Hello java 注意点 系统可能没有显示文件后缀名 我们需要手动打开 编写代码 public class Hello publ
  • 在connect中使用lambda实现高效的信号/槽关联

    在Qt中 使用QCoreApplication connect 函数连接信号 signal 与槽 slots 的功能 以下是connect函数的三种重载形式 static QMetaObject Connection connect con
  • Linux 命令大全

    系统信息 arch 显示机器的处理器架构 1 uname m 显示机器的处理器架构 2 uname r 显示正在使用的内核版本 dmidecode q 显示硬件系统部件 SMBIOS DMI hdparm i dev hda 罗列一个磁盘的
  • 超模脸、网红脸、萌娃脸...换头像不重样?我开源了5款人脸生成器

    出品 AI科技大本营 ID rgznai100 英伟达近日提出的新一代 StyleGAN 通过对 StyleGAN 的生成效果分析 他们对不完美的工作设计了改进和优化方法 使得生成图片的质量和效果更上一层楼 如今 用 StyleGAN 技术
  • 第四章:综合布线

    一 综合布线 1 PDS综合布线系统的作用优势 1 PDS综合布线 将复杂的强电 弱电 安防系统按照子系统划分 不同的子系统负责不同的功能方便管理和扩展 2 PDS优势 结构清晰方便管理 材料统一先进适应发展 灵活性强易于扩展 增强可靠性节
  • 你如何使用Python制作网站?

    在本文中 我们将讨论如何使用Python制作网站 Python 是一种 1991 年的编程语言 在过去十年中越来越受欢迎 如今 Python编码器在计算机行业中的需求量很大 Python是一种通用编程语言 这意味着它几乎可用于开发任何类型的
  • 腾讯云演示nginx(若依项目)

    负载均衡 负载均衡介绍 Load balancing 即负载均衡 是一种计算机技术 用来在多个计算机 计算机集群 网络连接 CPU 磁盘驱动器或其他资源中分配负载 以达到最优化资源使用 最大化吞吐率 最小化响应时间 同时避免过载的目的 负载
  • ES6语法(一)

    var let const的区别 var声明的变量 let声明的变量 const声明的变量 作用域 全局 当前代码块 当前代码块 是否提升 提升 被提升到js代码最上面 不提升 必须先声明再使用 不提升 必须先声明再使用 是否可重新赋值 可
  • Could not set parameters for Parameter index out of range (12 > number of parameters, which is 11)处理

    nested exception is org apache ibatis type TypeException Could not set parameters for mapping ParameterMapping property
  • leetcode 51. N 皇后

    N 皇后 题目链接 N皇后 题目 思路 用回溯方法 先构造出一个棋盘二维数组 每行选择一个位置放皇后Q 再不断回溯 代码 class Solution vector