当前位置: 首页 > news >正文

建一个网站花费九一制作厂网站

建一个网站花费,九一制作厂网站,网站模板 源码,asp.net网站开发实训Leetcode 51. N皇后 题目链接:51 N皇后 题干:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整…

Leetcode 51. N皇后

题目链接:51 N皇后

题干:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

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

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

思考:回溯法。先定义结果集result,再考虑回溯函数:

函数参数含义
参数含义
n题目给定皇后个数
chessboard当前棋盘摆放情况
row当前处理行数

 终止条件:如果当前处理行数row等于n时说明皇后已全部摆放完毕,将当前棋盘摆放情况chessboard存放到结果集result中。

单层搜索逻辑:从下标0开始循环处理每个二维坐标位置,若当前行row当前列col存放皇后合法则摆放皇后,递归处理,最后回溯。

验证row行col列摆放皇后合法性:参数当前行列值,当前棋盘以及皇后个数。三处标准判断合法性:不能同行(每次处理都是不同行故此标准不用验证)、不能同列、不能同斜线 (45度和135度角)。

  • 判断同列:当前row行前面的所以行对应的col列是否摆放过皇后
  • 判断45°线:当前row行col列45°斜方向是否摆放过皇后
  • 判断135°线:当前row行col列135°斜方向是否摆放过皇后

代码:

class Solution {
public:vector<vector<string>> result;//n : 皇后个数  chessboard : 当前棋盘摆放情况   row : 当前处理行数void backtracking(const int n, vector<string>& chessboard, int row) {if (row == n) {result.push_back(chessboard);return;}for (int col = 0; col < n; col++) {if (isValid(n, chessboard, row, col)) {chessboard[row][col] = 'Q';     //摆放皇后backtracking(n, chessboard, row + 1);chessboard[row][col] = '.';     //回溯}}}//判断row行col列摆放皇后是否合法bool isValid(const int n, vector<string>& chessboard, int row, int col) {//检查此行是否摆放过皇后for (int i = 0; i < row; i++)       if (chessboard[i][col] == 'Q')return false;//检查45°线是否摆放过皇后for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--)      if (chessboard[i][j] == 'Q')return false;//检查135°线是否摆放过皇后for (int i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++)if (chessboard[i][j] == 'Q')return false;return true;}vector<vector<string>> solveNQueens(int n) {result.clear();vector<string> chessboard(n, string(n, '.'));backtracking(n, chessboard, 0);return result;}
};

回溯法专题总结:

  •  熟悉回溯法代码整体框架。把回溯问题抽象为树形结构,其搜索的过程:for循环横向遍历,递归纵向遍历,回溯不断调整结果集。
  • 确定是否使用startIndex。对于组合问题,如果是一个集合来求组合的话,就需要startIndex;如果是多个集合取组合,各个集合之间相互不影响,那么就不用startIndex。
  • 熟悉同层去重两种方式。排序后相邻元素比较以及set容器记录使用情况。了解到节点去重,但未归纳。
  • 明确在树形结构中子集问题是要收集所有节点的结果,而组合问题是收集叶子节点的结果。
http://www.yayakq.cn/news/991908/

相关文章:

  • 做网站的回扣2018做网站的软件
  • 杭州开发区建设局网站服装公司网站首页
  • 制作企业推广网站wordpress关闭手机访问不了
  • 建站经验 网站建设学院微信24小时人工申诉
  • 有域名了怎么做网站泉州网站建设培训机构
  • 南宁网站建设哪家公搭建网站案例
  • 网站开发工作 岗位怎么称呼什么是seo和sem
  • php做的网站模板下载google app下载
  • 民宿网站建设 世家北京公司注册流程及需要的材料
  • 装修网站设计图推荐怎么做网页小猪佩奇
  • 公司网站建设文案顺德做pc端网站
  • 网站被黑 发现ps教程自学网手机版
  • 网站域名备案与不备案的区别搜索指数的数据来源是什么
  • 学做网站制作网站怎样优化文章关键词
  • 深圳市住房建设局网站wordpress 4.5 汉化主题
  • 怎么制作一个表白网站行业信息网站建设方案
  • 广州正规网站建设有哪些助企建站
  • 网站 建设平台分析电子商务网站应该如何建设
  • 做视频up主视频网站做挂件的网站
  • 英文网站导航 源码北京朝阳区在几环
  • 无锡 网站制作 大公司谁有手机网站发几个吧
  • 建筑人才网123门户网网站seo怎么做
  • 重庆航运建设发展有限公司 网站wordpress 网站死机
  • php+mysql网站开发技术与典型案例导航【源代码】湖南网页制作公司
  • 乐昌市建设网站福建省住房和城乡建设厅官方网站
  • 网站首页布局修改建设三库一平台
  • 医院网站做品牌推广需要哪些百度站长统计
  • 新沂网站建设公司网页设计与制作教程杨选辉ppt
  • 福田官网网站东莞门户网站建设报价表
  • 上林住房和城乡建设网站找资源最好的是哪个软件