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

站长seo推广网站建设免费

站长seo推广,网站建设免费,网站运营推广该如何做,临清网站优化题意 给定一个数字 n n n,形成n*n的棋盘,棋盘上放n个皇后,确保皇后之间不会相互吃(皇后可以直线吃,斜线吃) 链接 https://leetcode.com/problems/n-queens/description/ 思考 这道题只能暴力枚举所有的…

题意

给定一个数字 n n n,形成n*n的棋盘,棋盘上放n个皇后,确保皇后之间不会相互吃(皇后可以直线吃,斜线吃)

链接

https://leetcode.com/problems/n-queens/description/

思考

这道题只能暴力枚举所有的位置,但是如果直接在二维矩阵上做空间复杂度比较高,可以降维度

题解

dfs枚举所有可以放n皇后的地方。构造一个数组pos, p o s [ i ] pos[i] pos[i]代表在第i行第pos[i]列放一个皇后。
结束条件为,当pos数组长度为n,根据pos数组构造二维的答案
传入参数u表示当前pos数组添加到第几个元素(实际上是第u行皇后应该放在什么位置),遍历这个元素所有的可能性(0-n 列),并且判断新放入皇后是否和前面所有的皇后列数相同,是否和前面所有的皇后在同一个对角线上,如果不在,那么第u位就选了,要选择第u+1位元素,注意回溯。

对角线性质

请添加图片描述

class Solution {
public:vector<vector<string>> res; vector<vector<string>> solveNQueens(int n) {//pos保证所有的n queens不可能在同一行,所以循环中只需要check//是不是同一列或者斜对角就可以vector<int> pos;dfs(0, pos, n);return res;}void dfs(int u, vector<int>& pos, int n) {if( u == n ) {vector<string> str(n, string(n, '.'));for(int i = 0; i < n; i++) {str[i][pos[i]] = 'Q';}res.push_back(str);return;}for(int i = 0; i < n; i++) {if(isValid(pos,u, i)) {pos.push_back(i);dfs(u+1, pos, n);pos.pop_back();}}}bool isValid(vector<int>& pos, int row, int col) {int m = pos.size();for(int i = 0; i < m; i++) {int preRow = i;int preCol = pos[i];if(col == preCol) return false;if(abs(row-preRow) == abs(col - preCol)) return false;}return true;}
};

时间复杂度: O ( N 2 ∗ N ! ) O(N^2* N!) O(N2N!)
空间复杂度: O ( N ) O(N) O(N)

N Queens II是统计所有不同的方案数,一样的解法

class Solution {
public:int cnt = 0;int totalNQueens(int n) {vector<int> pos;dfs(0, pos, n);return cnt;}void dfs(int u, vector<int>& pos, int n) {if( u == n) {cnt++;return;}static vector<bool> col(n, false);static vector<bool> diag(2*n-1, false);static vector<bool> udiag(2*n-1, false);        for(int i = 0; i < n; i++) {int r = u;int c = i;if(!col[c] && !diag[r+c] && !udiag[r-c+n-1]) {pos.push_back(i);col[c] = diag[r+c] = udiag[r-c+n-1] = true;dfs(u+1, pos, n);col[c] = diag[r+c] = udiag[r-c+n-1] = false;pos.pop_back();}}}
};

时间复杂度: O ( N 2 ∗ N ! ) O(N^2* N!) O(N2N!)
空间复杂度: O ( N ) O(N) O(N)

http://www.yayakq.cn/news/685658/

相关文章:

  • 做淘宝联盟网站影音先锋资源网站建设
  • 怎么做帖子网站广东网站建设工作
  • 用网站还是阿里巴巴做soho商城首页网站
  • 如何做考试网站将page转换为wordpress
  • 网站怎么做赚钱个人性质的网站 备注怎么写
  • 做动物网站的原因是房屋室内设计用什么软件
  • 网站做淘宝客需要什么网站结构建设方案
  • 做宣传的网站龙岩电商公司
  • 蜗牛星际做网站邯郸网站设计招聘
  • 用织梦做手机移动版网站怎么做电影流量网站吗
  • 建设一个网站选择的服务器辽宁省建设工程招标投标协会网站
  • wap建站后只能访问首页phpcms 转 wordpress tag
  • dw网站模板wordpress图表插件
  • 专业生产车间设计图纸网站阿里巴巴有几个网站是做外贸的
  • wordpress 做手机站南通通州区城乡建设局网站
  • 济南公司制作网站低价货源网站
  • 网站动态和静态的区别免费 网站点击
  • 广东炒股配资网站开发展会电子商务网站如何建设
  • 宝安-网站建设信科网络手机网站赏析
  • 厦门小羽佳网站建设开发域名查询ip网站
  • wordpress做大站好吗不写代码门户网站建设
  • 怎样手机微信登陆网站公司没网站怎么做dsp
  • 网站建设短信甘德县公司网站建设
  • 教做flash的网站厦门人才网唯一官网登录
  • apple esc企业解决方案百度seo排名优化公司哪家强
  • 赤壁网站建设公司卸载wordpress教程
  • 上海网站建设开发哪家好网站建造免费
  • wordpress网站数据库崩溃一般个人网址是什么
  • 提高网站排名的软件国家信息企业网查询
  • 本地网站建设软件可以做长页的网站