新手做网站最简单流程如何做网站标题不含关键词的排名
news/
2025/10/2 18:52:34/
文章来源:
新手做网站最简单流程,如何做网站标题不含关键词的排名,seo综合查询可以关了吗,申请个人网站和企业官网有什么不同按照国际象棋的规则#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上#xff0c;并且使皇后彼此之间不能相互攻击。
给你一个整数 n #xff0c;返回所有不同的 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
解题思路 从上往下按行依次放置皇后标记放置过皇后的那一列后面放皇后不可放在已标记的列上。但如此做则会有冲突例如会出现以下情况 y\x 0 1 2 3 0 皇后 皇后 1 皇后 皇后 2 皇后 皇后 3 皇后 皇后
但我们会发现左边第一种情况下相同左上到右下的斜线上的皇后的y坐标减去x坐标值是相同的而右边的第二种情况下相同右上到左下的斜线上的皇后的x坐标加上y坐标值是相同的
因此我们可以得出结论当有两个皇后的x,y坐标满足xy相等或y-x相等时该摆放方法不成立。
思路理清之后接下来就可以用回溯的方法遍历筛选出可行的方案。
class Solution {//创建一个数组放置第i个皇后的位置int queen[][]new int[10][2];//创建一个数组记录已被占据的列int line[]new int[10];//创建总返回数组listListListStringlistnew ArrayList();public ListListString solveNQueens(int n) {ListString lnew ArrayList();backtraver(l,n,0);return list;}//回溯dfsfor循环public void backtraver(ListStringl,int n,int m){//当数组l大小等于n时表示放置完毕存入listif(l.size()n){list.add(new ArrayList(l));return;}if(mn){//for循环遍历每一列for(int x0;xn;x){//访问未被占据的列if(line[x]0){//判断这一行放的皇后是否会与前面的冲突若不冲突则放进数组if(isvisit(m,x)){//创建对应要求的String输出char[] rownew char[n];Arrays.fill(row,.);row[x]Q;l.add(new String(row));//将该皇后位置放入存放所有皇后位置的数组中queen[m][0]m;queen[m][1]x;//将该列置零line[x]1;//继续回溯backtraver(l,n,m1);//访问完后退回来将该列置零再将对应元素移除line[x]0;l.remove(l.size()-1);}}}}}//判断这一行的皇后与前几行的是否冲突public boolean isvisit(int x,int y){if(x0) return true;for(int z0;zx;z){//若前几行有皇后的y-x或xy与该皇后相同则返回falseif(queen[z][0]queen[z][1]xy||queen[z][1]-queen[z][0]y-x)return false;}return true;}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925202.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!