LeetCode——051

2023-10-30

这里写图片描述
/*
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
这里写图片描述
Given an integer n, return all distinct solutions to the n-queens puzzle.

Each solution contains a distinct board configuration of the n-queens’ placement, where ‘Q’ and ‘.’ both indicate a queen and an empty space respectively.

For example,
There exist two distinct solutions to the 4-queens puzzle:

[
[“.Q..”, // Solution 1
“…Q”,
“Q…”,
“..Q.”],

[“..Q.”, // Solution 2
“Q…”,
“…Q”,
“.Q..”]
]
Subscribe to see which companies asked this question
*/

/*
解题思路:
深度遍历的典型题目,按行开始一层代表一行,当在某行的某个位置填上Q之后,还要验证一下是否符合,验证的标准是看看前面已经处理完的几行中,是否在当前列填了Q或者先前的Q与本行的Q在斜对角线上,如果出现任意一种情况都不合适。
*/

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


        //把所有可能的情况都存起来
        string s(n,'.');
        vector<string> vec(n,s);
        vector<vector<string>> res;

        dfs(0,vec,res);
        return res;

    }

    void dfs(int cur,vector<string>&vec,vector<vector<string>>&res){

        if(cur==vec.size()){
            res.push_back(vec);
            return ;
        }
        for(int i=0;i<vec.size();i++){

            if(isvalid(cur,i,vec)){
                vec[cur][i]='Q';
                dfs(cur+1,vec,res);
                vec[cur][i]='.';
            }
        }

    }
    bool isvalid(int row,int col,vector<string>vec){

        for(int i=0;i<row;i++){
            for(int j=0;j<vec.size();j++){
                if(vec[i][j]=='Q'){
                    if(j==col || abs(j-col)==abs(i-row))return false;
                }
            }
        }
        return true;
    }

};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode——051 的相关文章

  • AStar-名称解释

    我正在寻找 AStar A 算法为何被称为 AStar 的解释 所有类似的 最短路径问题 算法通常都以其开发者的名字命名 那么 AStar 代表什么 有称为 A1 和 A2 的算法 后来证明A2是最优的 实际上也是可能的最好算法 所以他给它
  • 在矩阵/位图中查找质量簇

    这是此处发布的问题的延续 在 2D 位图上查找质心 https stackoverflow com questions 408358 finding the center of mass on a 2d bitmap正如给出的例子 它讨论了
  • 贪心技术与穷举搜索有何不同?

    我正在为一些示例问题编写伪代码 并且我注意到贪婪技术和详尽搜索之间存在令人担忧的模式 Job 1 Job 2 Job 3 Job 4 Job 5 Person 1 9 2 7 8 Person 2 6 4 3 7 Person 3 5 8
  • 优化重叠矩形的绘制

    我有很多矩形 有些与其他矩形重叠 每个矩形都有一个绝对 z 顺序和一个colour 每个 矩形 实际上是粒子效果 网格或纹理的轴对齐边界框 并且可能是半透明的 但只要您不尝试剔除其他矩形后面的矩形 就更容易抽象地思考彩色矩形 所以我将在问题
  • 布隆过滤器的使用

    我正在努力理解布隆过滤器的用处 我了解了它的底层逻辑 空间压缩 快速查找 误报等 我只是不能将这个概念应用到现实生活中 因为它是有益的 一种常见的应用是在 Web 缓存中使用布隆过滤器 我们使用布隆过滤器来确定给定的 URL 是否在缓存中
  • 最接近 x,y 的线上的点[重复]

    这个问题在这里已经有答案了 可能的重复 如何判断一个点是否在某条线附近 https stackoverflow com questions 910882 how can i tell if a point is nearby a certa
  • 分组符号最大长度平衡子序列

    将 B 视为分组符号 和 的序列 如果 B 的长度为 0 或 B 具有以下形式之一 则称 B 为平衡序列 X Y 或 X Y 或 X Y 其中 X 和 Y 本身是平衡的 平衡示例 现在的问题是找到一种有效的算法来找到给定输入的最大长度平衡子
  • 计算给出数组中最小标准差的子集

    让我们有一个大小的向量N 例如 x rand N 1 我想计算长度子集的最小标准差K在向量中 When N and K很小 很容易找到最好的子集 因为我可以使用nchoosek N K 枚举所有可能的子集 但是当值N and K比我们说的要
  • 逐字遍历句子

    如何逐字遍历任何给定的句子 java中有内置函数吗 我不知道如何开始 像这样的事情 String sentence Your sentence here String words sentence split s splits by whi
  • 在哪里可以找到有关双三次插值和 Lanczos 重采样的好读物?

    我想用 C 实现上述两种图像重采样算法 双三次和 Lanczos 我知道现有的实现有几十种 但我仍然想制作自己的实现 我之所以这么做 部分原因是我想了解它们是如何工作的 部分原因是我想为它们提供一些主流实现中没有的功能 例如可配置的多 CP
  • 对列表中的相邻元素进行分组

    假设我想编写一个函数来执行此操作 输入 1 1 3 3 4 2 2 5 6 6 输出 1 1 3 3 4 2 2 5 6 6 它将相同的相邻元素分组 这个方法的名称应该是什么 此操作有标准名称吗 In 1 1 3 3 4 2 2 5 6 6
  • 如何使用networkx删除有向图中的所有相关节点?

    我不确定我的问题的正确术语是什么 所以我只会解释我想做的事情 我有一个有向图 删除节点后我希望所有独立相关的节点也被删除 这是一个例子 假设我删除节点 11 我希望节点 2 也被删除 在我自己的示例中 它们将是 2 以下的节点 现在也必须删
  • 如何确定字符串的最小公约数?

    我在面试时被问到以下问题 并被它难住了 我遇到的部分问题是要下定决心要解决什么问题 起初我并不认为这个问题在内部是一致的 但后来我意识到它要求你解决两个不同的问题 第一个任务是弄清楚一个字符串是否包含另一个字符串的倍数 但第二个任务是在两个
  • 算法 - 树中所有节点的最大距离

    所以 找到树中两个节点之间的最长路径相当容易 但我想要的是找到从节点出发的最长路径x到树中的另一个节点 对于所有x 这个问题也可以用以下方式表达 计算从给定的树中可以生成的所有有根树的高度 One way of course is to j
  • 打印从 1 到 100 的质数

    此 C 代码打印出以下素数 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 但我不认为这就是我的书所希望的写作方式 它提到了一些关于数字的平方根的内容
  • 查找数组中的重叠数据

    我们正在编写一个 C 应用程序 它将有助于删除不必要的数据重复器 只有在以下情况下才可以移除中继器 all它接收到的数据被其他中继器接收 我们第一步需要做的事情解释如下 例如 我有 int 数组的集合 A 1 2 3 4 5 b 2 4 6
  • n的渐近增长选择下限(n/2)

    如何找到 n select Floor n 2 的渐近增长 我试过 使用扩展并得到它等于 n n 1 floor n 2 1 n floor n 2 知道我该如何从那里去吗 感谢任何帮助 更喜欢提示而不是答案 我同意上面的答案 但想提供更多
  • CSR 矩阵 - 矩阵乘法

    我有两个方阵A and B 我必须转换B to CSR Format并确定产品C A B csr C 我在网上找到了很多关于CSR 矩阵 向量乘法 http www mathcs emory edu cheung Courses 561 S
  • 创建将 n 个用户放入 k 个组的所有可能方法

    给定 n 个用户 u 1 u 2 u n 和 k 个组 g 1 g 2 g k 创建所有组的所有可能组合 基本上 最后每个组合都是一个Map 其中第一个Integer是用户ID 第二个Integer是组ID 例如 u 1 g 1 u 2 g
  • 找到将一个数字转换为另一个数字的最小移动次数的算法

    假设我们有两个正整数 a 和 b 每次移动我们都可以将 a 除以 2 但前提是 a 是偶数 将 a 乘以 2 或者将 a 加 1 将a变为b需要多少步 找到一个直接公式或一种有效的算法 即以对数时间运行的算法 我取得的一些进展 我们可以把它

随机推荐

  • 如何将本地的mongodb数据导出,然后上传至阿里云服务器上mongodb中呢?

    1 使用MongoDB Compass 可视化工具将本地数据库导出 Collection gt Export Collection 2 将本地导出的mongodb数据库表上传至服务器上的任意位置 我使用的是Yummy FTP Pro 我上传
  • C终端获取终端数据

    写在前边 关于C语言从键盘获取数据 常用的有scanf gets getchar fgets等等 但是scanf gets getchar等函数不会对输入的数据进行检查 会导致程序崩溃 所以一般都用fgets获取数据 fgets问题 fge
  • 【并发编程】1、简介

    并发编程 简介 1 并发的出现 1 1 引入 计算机的出现改变了我们的生活呀 但在早期的计算机计算的效率与成本非常的高 基本上只能用于军方与有钱家庭 每个人都只能将自己写好的代码放到计算机上 计算完成后才能让下一个人继续使用计算机 就相当于
  • WY37 - 操作序列 - 网易

    java实现 题目描述 小易有一个长度为n的整数序列 a 1 a n 然后考虑在一个空序列b上进行n次以下操作 1 将a i放入b序列的末尾 2 逆置b序列 小易需要你计算输出操作n次之后的b序列 输入描述 输入包括两行 第一行包括一个整数
  • 如何将eclipse的英文设置成中文?

    点击eclipse选项栏中的 help 项 选择 install new solftware 可以看见如下界面 选择 添加 出现Add Repository界面 在名称处填写 babel 位置处粘贴如下库 https download ec
  • FPGA中的AXI总线

    网上有很多介绍AXI的文章 本篇或多或少参考了一些 其中的一些内容是我自己的理解 我认为比较适合新手 希望能帮助到才接触FPGA的萌新 一 AXI简介 AXI Advanced eXtensible Interface 直译过来就是先进的可
  • NEON优化:ARM优化高频指令总结

    NEON优化 ARM优化高频指令总结 前言 读写 计算 转换 操作 参考资料 NEON优化系列文章 NEON优化1 软件性能优化 降功耗怎么搞 link NEON优化2 ARM优化高频指令总结 link NEON优化3 矩阵转置的指令优化案
  • 保姆级vmware workstation Pro17安装紫色kali linux(KALI PURPLE)

    官方文档如下 官方文档 https gitlab com kalilinux kali purple documentation wikis home 虚拟机安装 下载vmware workstation Pro17 一路下一步安装完成 h
  • 使用python实现淘宝抢购

    疫情当下 大部分人选择网购 但是在有限数量的网购商品时 大家就需要蹲点抢了 而蹲点也不一定比别手快 有什么方法可以实现自动蹲点抢购呢 使用方法 1 先把想抢购的商品加入淘宝手机端的购物车 2 修改代码中抢购时间 3 运行代码 4 弹出浏览器
  • Flutter学习第三课-布局组件 Row和Column

    线性布局 所谓线性布局 即指沿水平或垂直方向排布子组件 Flutter中通过Row和Column来实现线性布局 Row 水平布局 Column 垂直布局 Row 和 Column 组件是不可以滚动的 所以在 Row 和Column 组件中不
  • 减少代码重复率的方法

    1 使用设计模式 设计模式的可以提高代码的复用率 减少代码的重复度 2 使用类模板或者函数模板 所谓的泛型编程
  • Python开发之DataFrame数据的多种遍历方法

    Python开发之DataFrame数据的多种遍历方法 1 遍历DataFrame的三种方法 2 按列遍历 3 按行遍历 3 1 第一种方法 3 2 第二种方法 4 遍历DataFrame某一列 行 数据 4 1 获取frame的index
  • Linux下输出彩色字符

    在 ANSI 兼容终端 例如 xterm rxvt konsole 等 里 可以用彩色显示文本而不仅仅是黑白 但是我们自己编写的程序能否输出彩色的字符呢 当然答案是肯定的 下面的语句就输出高亮的黑色背景的绿色字 printf 033 1 4
  • 【转载】keil消除*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS警告方法

    在Keil C中 如果没有显式调用到定义过的函数 就会出现这样的的警告 当出现这样的警告时 可以不用管 因为不影响其它部分 但是 我们知道 即使没有调用这个函数 Keil仍然把它编译连接进整个程序 不过浪费点ROM倒是不心疼 最主要的是 在
  • 京东高级Java现场面试37题:页锁+死锁+集群+雪崩+负载等

    京东现场三面面试题目 文末有福利 各大互联网公司经典面试题目及答案 京东一面 介绍一下自己 项目参与的核心设计有哪些 ArrayList和LinkedList底层 HashMap及线程安全的ConcurrentHashMap 以及各自优劣势
  • C语言--八大排序之希尔排序算法

    希尔 shell 排序 分组后 间隔式的分组 利用直接插入排序 简单来说就是 插入排序是间隔为一的数字之间进行比较 但希尔排序是间隔为gap的数字为一组 先进行一次插入排序 再不断缩小gap的值 重复以上操作 直到最后一个gap的值为1 分
  • C语言中求最大公约数的算法(三种)

    利用指针把三个数从大到小输出 最大公约数 指某几个整数共有约数中最大的一个 方法一 相减法 也叫更相减损法 思路 1 如果a gt b a a b 2 如果b gt a b b a 3 假如a b 则 a或 b是最大公约数 4 如果a b
  • 第一课:前言

    大家好 欢迎来到我的网站 人工智能被认为是一种拯救世界 终结世界的技术 毋庸置疑 人工智能时代就要来临了 科幻电影中的场景将成为现实 未来已来 我很庆幸 十四年前就认定了人工智能专业 一路学习着 从国内学到了国外 然后又回到了祖国参加工作
  • C++之private虚函数

    一般我们说虚函数 它的访问级别都是public的 用类对象可以直接调用 这样就可以实现运行时的类型绑定 那如果我们将虚函数私有化会出现什么情况呢 我们先来看一个非虚函数私有化的例子 class Base private void Print
  • LeetCode——051

    The n queens puzzle is the problem of placing n queens on an n n chessboard such that no two queens attack each other Gi