1. 题目描述
n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。
  1. 题解
回溯法
  1. 代码
class Solution {public:vector<vector<string>> solveNQueens(int n) {if (n==0) return vector<vector<string>>(0);vector<bool> colum(n,false);vector<bool> f1(2*n,false); // 主对角线vector<bool> f2(2*n,false); // 副对角线string s(n,'.');vector<string> vec(n,s);dfs(0,n,vec,colum,f1,f2);return res;}bool isvalid(int x,int y,int n,vector<bool> colum,vector<bool> f1,vector<bool> f2){if (colum[y]||f1[x-y+n-1]||f2[x+y]) return false;return true;}void dfs(int x,int n,vector<string> vec,vector<bool> colum,vector<bool> f1,vector<bool> f2){if (x==n){res.push_back(vec);return ;}for (int y=0;y<n;y++){if (colum[y]||f1[x-y+n-1]||f2[x+y]) continue;colum[y]=true;f1[x-y+n-1]=true;f2[x+y]=true;vec[x][y]='Q';dfs(x+1,n,vec,colum,f1,f2);colum[y]=false;f1[x-y+n-1]=false;f2[x+y]=false;vec[x][y]='.';}}vector<vector<string>> res;
};

LeetCode 51 N 皇后相关推荐

  1. 日拱一卒——LeetCode 51.N皇后

    ​ 大家好呀,今天是今天为大家带来的LeetCode的题目是LeetCode 51.N皇后问题,算是一道很经典的题目,也是一道难度不低的题目,但是只要我们掌握并理解了判断的逻辑,并且在代码编写上进行注 ...

  2. Leetcode.51. N 皇后

    Leetcode.51. N 皇后 难度:hard 好久没有过hard题目了,还是很开心! 本题的难点在于如何对一个二维数组进行回溯,我们的思路是以chessBoard的行hang为树的每一层,每次递 ...

  3. LeetCode 51. N 皇后、52. N 皇后 II

    51. N 皇后 n皇后问题要求皇后放置后,同一行,同一列,同一斜线上不存在其他的皇后即可 采用回溯法解决该问题 同时应该设置一个函数判断当该位置放置皇后后,是否合法 因为是采用回溯法放置皇后,每行只 ...

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

    1. 题目 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案 ...

  5. leetcode 51. N 皇后

    题目链接 与52类似,建议先做52 和52题不同的是,多了一个一维数组board保存每个皇后的列的位置,这样方便后续的读取. 在leetcode中 函数返回值为List<List> 但是我 ...

  6. 2022-3-31 Leetcode 51.N皇后

    class Solution {public:vector<vector<string>> res; //记录所有符合答案vector<string> temp; ...

  7. LeetCode——51. N 皇后

    一.题目 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子. n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 ...

  8. LeetCode 51. N皇后

    https://leetcode-cn.com/problems/n-queens/ 难度:困难   n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. ...

  9. Leetcode 51. N 皇后 (每日一题 20211008)

    n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击.给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案.每一种解法包含一个不同的 n 皇后问题 ...

  10. leetcode 51. N 皇后 思考分析

    目录 题目 思考 AC代码 题目 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 思考 首先以N=4为例,画出解空间树的一部分: 根据模板: void ...

最新文章

  1. linux 脚本案例,30个关于Shell脚本的经典案例(上)
  2. 皮一皮:论一件艺术品的诞生...
  3. 645. Set Mismatch(python)
  4. JavaSist之ClassPool
  5. 静态网页和动态网页的区别(转载)
  6. MySQL 常用账户管理及授权操作
  7. Boost:计时系的测试
  8. linux 命令分号,linux命令之间的分号,, ||
  9. php 设置中文 cookie, js获取
  10. 数据特征分析-统计分析
  11. vuex commit 传参数,传递多个参数
  12. String类的流程控制
  13. OCR基于深度学习下的CNN字符识别
  14. [转载] python创建集合set()_Python 集合set()
  15. mybatis_Mapped Statements collection already contains value
  16. IOS开发--第三阶段--微博(1)文档
  17. 【品牌DTC增长力】私域,你做的可能是“假的”
  18. 01-Docker-介绍与安装(CentOS)
  19. win8计算机配置管理模板,win8.1用户帐户配置管理图文详解
  20. 使用 EF Core Power Tools 和 CoreAdmin 在 5 分钟内将管理员 CRUD 网页添加到您的 ASP.NET Core Web 应用程序

热门文章

  1. matlab 纯数据表格,MATLAB uitable表格数据更新处理
  2. Cell | 大规模多组织转录组学研究揭示长非编码RNA与人类复杂疾病的联系
  3. 她的癌细胞救了上亿条命,却很少有人知道她的名字
  4. macos 下 vmware fusion 安装 vmware tools教程
  5. Nitrozme Animation Studio Packages Mac(AE插件拓展包)
  6. utools插件开发之监听按键的命令和状态
  7. springcloud的简单使用_微服务架构:初识Spring Cloud
  8. Qt实践|HTTP知识点-使用百度AI语音识别服务
  9. Java学习笔记-对IoC(Inversion of Control)的基本认识
  10. Qt文档阅读笔记-QWebPage官方解析与实例