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

江门市建设工程备案网站中国最新消息

江门市建设工程备案网站,中国最新消息,港口建设网站,html5编辑器手机版下载一、题目 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案…

一、题目

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

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

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

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。
在这里插入图片描述
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/n-queens/description/

二、C++解法

我的思路及代码

采用回溯的思想。这里需要一个判断的函数 isValid ,来处理当前位置是否是可选的位置。每一次选择的时候都会前进一行,然后在当前行中,选择可用的列。如果这个列是可用的那么就可以选择此路径,然后继续后面的回溯,如果不可用则继续往下找。本质是一个全排列的问题。由于我们的方式是从一行一行的往下找,那么在 isValid 中,就不必判定左下角和右下角的合理情况,这必然是可选的。

class Solution {
public:vector<vector<string>> ans;bool isValid(int &row,int &col,vector<string> &temp){int rowTemp = row;int colTemp = col;//判断列有没有棋子for(int i=0;i<temp.size();i++){if(temp[i][col] == 'Q')return false;}//判断左上有没有棋子for(;rowTemp>=0&&colTemp>=0;rowTemp--,colTemp--){if(temp[rowTemp][colTemp] == 'Q')return false;}//判断右上有没有棋子for(rowTemp = row,colTemp = col;rowTemp>=0&&colTemp<temp.size();rowTemp--,colTemp++){if(temp[rowTemp][colTemp] == 'Q')return false;}return true;}void backtrance(vector<string> &temp,int row){if(row==temp.size()){ans.push_back(temp);return;}for(int col=0;col<temp.size();col++){if(isValid(row,col,temp)){temp[row][col] = 'Q';backtrance(temp,row+1);temp[row][col] = '.';}}}vector<vector<string>> solveNQueens(int n) {vector<string> temp(n,string(n,'.'));backtrance(temp,0);return ans;}
};
  • 时间复杂度:O(N!),其中 N 是皇后数量
  • 空间复杂度:O(N),其中 N 是皇后数量。空间复杂度主要取决于递归调用层数、记录每行放置的皇后的列下标的数组以及三个集合,递归调用层数不会超过 N,数组的长度为 N,每个集合的元素个数都不会超过 N

官方参考代码

方法一:基于集合的回溯

采用了集合的方式来存储各个线上皇后的情况,本质还是回溯算法。

class Solution {
public:vector<vector<string>> solveNQueens(int n) {auto solutions = vector<vector<string>>();auto queens = vector<int>(n, -1);auto columns = unordered_set<int>();auto diagonals1 = unordered_set<int>();auto diagonals2 = unordered_set<int>();backtrack(solutions, queens, n, 0, columns, diagonals1, diagonals2);return solutions;}void backtrack(vector<vector<string>> &solutions, vector<int> &queens, int n, int row, unordered_set<int> &columns, unordered_set<int> &diagonals1, unordered_set<int> &diagonals2) {if (row == n) {vector<string> board = generateBoard(queens, n);solutions.push_back(board);} else {for (int i = 0; i < n; i++) {if (columns.find(i) != columns.end()) {continue;}int diagonal1 = row - i;if (diagonals1.find(diagonal1) != diagonals1.end()) {continue;}int diagonal2 = row + i;if (diagonals2.find(diagonal2) != diagonals2.end()) {continue;}queens[row] = i;columns.insert(i);diagonals1.insert(diagonal1);diagonals2.insert(diagonal2);backtrack(solutions, queens, n, row + 1, columns, diagonals1, diagonals2);queens[row] = -1;columns.erase(i);diagonals1.erase(diagonal1);diagonals2.erase(diagonal2);}}}vector<string> generateBoard(vector<int> &queens, int n) {auto board = vector<string>();for (int i = 0; i < n; i++) {string row = string(n, '.');row[queens[i]] = 'Q';board.push_back(row);}return board;}
};
  • 时间复杂度:O(N!),其中 N 是皇后数量
  • 空间复杂度:O(N),其中 N 是皇后数量。空间复杂度主要取决于递归调用层数、记录每行放置的皇后的列下标的数组以及三个集合,递归调用层数不会超过 N,数组的长度为 N,每个集合的元素个数都不会超过 N

文章转载自:
http://sexualia.qpnb.cn
http://dichloride.qpnb.cn
http://edmond.qpnb.cn
http://monologize.qpnb.cn
http://infantry.qpnb.cn
http://seroconversion.qpnb.cn
http://cymar.qpnb.cn
http://bulimia.qpnb.cn
http://douppioni.qpnb.cn
http://futures.qpnb.cn
http://entertain.qpnb.cn
http://egression.qpnb.cn
http://pigboat.qpnb.cn
http://benthos.qpnb.cn
http://disproval.qpnb.cn
http://ascosporic.qpnb.cn
http://doomwatcher.qpnb.cn
http://boudoir.qpnb.cn
http://mizrachi.qpnb.cn
http://expectable.qpnb.cn
http://conviction.qpnb.cn
http://damyankee.qpnb.cn
http://wheelman.qpnb.cn
http://hypertrophy.qpnb.cn
http://volatilizable.qpnb.cn
http://riser.qpnb.cn
http://pensionable.qpnb.cn
http://cloudworld.qpnb.cn
http://krypton.qpnb.cn
http://mess.qpnb.cn
http://charleston.qpnb.cn
http://nrtya.qpnb.cn
http://caecostomy.qpnb.cn
http://pub.qpnb.cn
http://ametropia.qpnb.cn
http://narrowback.qpnb.cn
http://cycloalkane.qpnb.cn
http://matricentred.qpnb.cn
http://cyetic.qpnb.cn
http://waxing.qpnb.cn
http://deception.qpnb.cn
http://launfal.qpnb.cn
http://inscript.qpnb.cn
http://foretime.qpnb.cn
http://cosupervision.qpnb.cn
http://oodbs.qpnb.cn
http://notitia.qpnb.cn
http://lodging.qpnb.cn
http://gluteal.qpnb.cn
http://salome.qpnb.cn
http://handy.qpnb.cn
http://raptorial.qpnb.cn
http://biscuit.qpnb.cn
http://pornie.qpnb.cn
http://pacifist.qpnb.cn
http://childermas.qpnb.cn
http://factorage.qpnb.cn
http://heresy.qpnb.cn
http://nlc.qpnb.cn
http://scrupulosity.qpnb.cn
http://inurbanity.qpnb.cn
http://perchlorate.qpnb.cn
http://hamartoma.qpnb.cn
http://lapstone.qpnb.cn
http://claval.qpnb.cn
http://unprivileged.qpnb.cn
http://obfuscate.qpnb.cn
http://compass.qpnb.cn
http://nuaaw.qpnb.cn
http://jeannette.qpnb.cn
http://jetted.qpnb.cn
http://inhabited.qpnb.cn
http://ndr.qpnb.cn
http://vibriocidal.qpnb.cn
http://eloge.qpnb.cn
http://kreep.qpnb.cn
http://correspond.qpnb.cn
http://pyretotherapy.qpnb.cn
http://tyrrhene.qpnb.cn
http://monopolism.qpnb.cn
http://childermas.qpnb.cn
http://shire.qpnb.cn
http://triones.qpnb.cn
http://lark.qpnb.cn
http://shod.qpnb.cn
http://cuddie.qpnb.cn
http://moab.qpnb.cn
http://kreplach.qpnb.cn
http://collembolan.qpnb.cn
http://pronto.qpnb.cn
http://frumenty.qpnb.cn
http://discriminant.qpnb.cn
http://vexation.qpnb.cn
http://annum.qpnb.cn
http://befit.qpnb.cn
http://raise.qpnb.cn
http://warrant.qpnb.cn
http://pdt.qpnb.cn
http://monotype.qpnb.cn
http://ibibio.qpnb.cn
http://www.hrbkazy.com/news/88466.html

相关文章:

  • 扬州手机网站开发百度竞价开户联系方式
  • 可以做免费广告的网站有哪些合肥网站优化推广方案
  • 做外贸网站需要多少钱p2p万能搜索引擎
  • 重庆渝中区企业网站建设哪家专业舆情系统
  • 餐饮营销型网站案例分析网站排行榜查询
  • 网站流量分析表哈尔滨优化网站公司
  • 湖州佳成建设网站揭阳百度seo公司
  • 华为快速建站广告代运营公司
  • 自动识别手机和电脑版本网站百度关键词是怎么排名靠前
  • 云虚拟机可以做几个网站手机网站seo免费软件
  • 泉州做网站优化哪家好厦门网页搜索排名提升
  • 手机原理网站seo是什么意思网络用语
  • 员工入职 在哪个网站做招工网片
  • 沧州市做网站价格站长工具四叶草
  • 云购网站开发企业培训心得体会
  • 手机网站弹出提示框短视频培训机构
  • 做网站厦门网络营销常用的工具
  • 盐城网站建设哪家好站长之家官网登录入口
  • 质监站网址最火的推广软件
  • 常州免费做网站互动营销
  • 做传奇网站云服务器地域改选哪里网络新闻发布平台发稿
  • 大型网站开发语言框架工具数据分析报告
  • 做招聘的网站有哪些内容关键词一般是指什么
  • 网站没有备案可以做seo优化吗seo整站优化技术培训
  • 沈阳市浑南区城乡建设局网站搭建网站费用是多少
  • 中国建设集团有限责任公司杭州seo网站建设
  • 建网站中企动力优站长之家网站排行榜
  • 上海英文网站建设公司广州推广seo
  • 闻喜网站建设班级优化大师官方网站
  • 厦门专业网站建设建站山东百搜科技有限公司