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

模板网站建设公司百度搜索高级搜索技巧

模板网站建设公司,百度搜索高级搜索技巧,以下不是网站开发语言的哪项,梅州网站建设公司题目链接 leetcode在线oj题——N皇后 题目描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff…

题目链接

leetcode在线oj题——N皇后

题目描述

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

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

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

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

题目示例

示例1:
在这里插入图片描述
输入:n = 4
输出:[[“.Q…”,“…Q”,“Q…”,“…Q.”],[“…Q.”,“Q…”,“…Q”,“.Q…”]]
解释:如上图所示,4 皇后问题存在两个不同的解法。

示例2:
输入:n = 1
输出:[[“Q”]]

题目提示

  • 1 <= n <= 9

解题思路

使用深度搜索的方法,按照先行后列的顺序,查看每一个位置是否满足条件

先从第一行第一列开始,使这个位置占一个皇后,显然第一行和第一列,与其所在斜线都无法再放皇后了
在这里插入图片描述
然后按照顺序将第二个皇后放在第二行第三列
显然这种放法只能支持三个皇后
在这里插入图片描述
那么回退到上一个状态(第一个皇后在第一行第一列),按照顺序将第二个皇后放在第二行第四列
在这里插入图片描述
显然这种放法也是只能放三个,那么再次回退到上一个状态,按照顺序将第二个皇后放在第三行第二个(这时和放在第二行第三列是对称的,因此结果一致),显然也只能放四个皇后,状态回溯到上一个状态

再将第二个皇后放在第三行第四列,显然这种情况也是只能最多放三个
在这里插入图片描述
其他两个位置也和上面的位置是对称的,因此将第一个皇后放在第一行第一列的情况是没有结果的,状态回溯到没有放皇后的状态

按照顺序,我们将第一个皇后放在第一行第二位
在这里插入图片描述
再按照顺序将第二个皇后放在第二行第四列
在这里插入图片描述
按照顺序将第三个皇后放在第三行第一列上,可以发现这种情况可以放到第四个皇后,状态再次回溯到第一个状态(第一个皇后放在第一行第二列上)
在这里插入图片描述
按照顺序,将皇后放在第三行第一列,可以发现最终产生的结果和上一次的结果一样,因此状态再次退回到没有一个皇后的状态

按照顺序,将第一个皇后放在第一行第三列上
在这里插入图片描述
然后按照顺序,将第二个皇后放在第二行第一列上
在这里插入图片描述
按照顺序,第三个皇后放在第三行第四列上,可以发现最终也可以得到最终的结果
在这里插入图片描述
事实上,把第一个皇后放在第一行第三列上和放在第一行第二列上是对称的情况,因此得到的结果也是对称的

而将第一个皇后放在第一行第四列上和放在第一行第一列上是对称的情况,因此也得不到最后的结果

按照上面的思想,可以写出下面的代码

代码

class Solution {static class Pair{public int x;public int y;public Pair(int x, int y){this.x = x;this.y = y;}}static void DFS(List<List<Pair>> result, List<Pair> curRet,int curRow, int n){//每一行都有元素,当前结果是可行的if(curRow == n){result.add(new ArrayList<>(curRet));return;}//遍历每一列for (int i = 0; i < n; i++) {if(isValidPos(curRet, curRow, i)){curRet.add(new Pair(curRow, i));//处理下一行DFS(result, curRet, curRow + 1, n);//回溯curRet.remove(curRet.size() - 1);}}}/*** 判断当前位置是否有效* @param curRet* @param row* @param col* @return*/private static boolean isValidPos(List<Pair> curRet, int row, int col) {//查看每一个已经存储的点与该点是否有冲突for (int i = 0; i < curRet.size(); i++) {Pair pair = curRet.get(i);if(pair.y == col || pair.x + pair.y == row + col ||pair.x - pair.y == row - col){return false;}}return true;}private static List<List<String>> transResult(List<List<Pair>> result, int n){List<List<String>> finalResult = new ArrayList<>();for (int i = 0; i < result.size(); i++) {//一种方案List<Pair> curRet = result.get(i);List<StringBuffer> stringList = new ArrayList<>();//先将所有位置都设置为.for (int j = 0; j < n; j++) {StringBuffer stringBuffer = new StringBuffer();for (int k = 0; k < n; k++) {stringBuffer.append(".");}stringList.add(stringBuffer);}for (int j = 0; j < curRet.size(); j++) {//一种方案中的位置Pair pair = curRet.get(j);//再将对应位置设置为QstringList.get(pair.x).setCharAt(pair.y, 'Q');}//重新创建一个ret,存储StringList中StringBuffer.toString后的字符串List<String> ret = new ArrayList<>();for (int j = 0; j < stringList.size(); j++) {ret.add(stringList.get(j).toString());}finalResult.add(ret);}return finalResult;}public static List<List<String>> solveNQueens(int n) {List<List<Pair>> result = new ArrayList<>();List<Pair> curRet = new ArrayList<>();DFS(result, curRet, 0, n);return transResult(result, n);}
}
http://www.hkea.cn/news/553315/

相关文章:

  • 现在做网站还用dw做模板了吗成人电脑速成培训班
  • 做app要不要建网站刚开的店铺怎么做推广
  • 做生存分析的网站有哪些专业的网站优化公司
  • 网站双倍浮动百度联盟app
  • 北京网站设计确保代码符合w3c广州网络营销的推广
  • 做网站实名认证有什么用百度移动端模拟点击排名
  • 知更鸟wordpress 怎样沈阳百度seo关键词优化排名
  • 携程网站模板互联网营销策略有哪些
  • 做网站内链什么意思上海排名优化seobwyseo
  • 四川做直销会员网站百度网盘帐号登录入口
  • 做百度竞价对网站有无要求网站推广排名服务
  • 建设工程合同包括成都网站改版优化
  • 深圳不加班的互联网公司整站seo优化
  • 中国做的很好的食品网站肇庆疫情最新消息
  • 做时时彩网站微信seo关键词有话要多少钱
  • 陇南市建设局网站商务软文写作
  • 做学术研究的网站营销方案怎么写?
  • 专业网站设计公司有哪些秒收录关键词代发
  • 织梦网站模板源码下载真实有效的优化排名
  • 网站建设过程中什么最重要磁力链bt磁力天堂
  • html5企业网站案例鹤壁搜索引擎优化
  • 网站建设平台简介链接交换平台
  • 照片展示网站模板宁波seo咨询
  • 奉贤建设机械网站制作长沙网址seo
  • 上海企业网站模板建站常用的网络推广方法
  • 大连零基础网站建设教学培训济南seo优化公司
  • html 做网站案例简单网站推广建设
  • 践行新使命忠诚保大庆网站建设线上广告
  • 定制网站建设服务商商家联盟营销方案
  • 集团官网建设公司外贸seo推广公司