很抱歉,您没有提供需要改写的句子。请提供您希望改写的句子,我将为您改写为一个长尾词的。
- 内容介绍
- 文章标签
- 相关推荐
本文共计476个文字,预计阅读时间需要2分钟。
1. 简述:描述N皇后问题是指在一个n*n的棋盘上放置n个皇后,要求任意两个皇后不在同一行、同一列,也不在同一直线上。要求:给出一个整数n,返回n皇后的放置方法数。
数据范围:要求:空间复杂度低。
1.简述:
描述N皇后问题是指在 n * n的棋盘上要摆 n个皇后,要求:任何两个皇后不同行,不同列也不在同一条斜线上,求给一个整数 n,返回 n皇后的摆法数。
数据范围:
要求:空间复杂度,时间复杂度
例如当输入4时,对应的返回值为2,
对应的两种四皇后摆位如下图所示:
示例1输入:
1返回值:
1示例2输入:
返回值:
922.代码实现:
import java.util.*;public class Solution {
private int res;
//判断皇后是否符合条件
public boolean isValid(int[] pos, int row, int col){
//遍历所有已经记录的行
for(int i = 0; i < row; i++){
//不能同行同列同一斜线
if(row == i || col == pos[i] || Math.abs(row - i) == Math.abs(col - pos[i]))
return false;
}
return true;
}
//递归查找皇后种类
public void recursion(int n, int row, int[] pos){
//完成全部行都选择了位置
if(row == n){
res++;
return;
}
//遍历所有列
for(int i = 0; i < n; i++){
//检查该位置是否符合条件
if(isValid(pos, row, i)){
//加入位置
pos[row] = i;
//递归继续查找
recursion(n, row + 1, pos);
}
}
}
public int Nqueen (int n) {
res = 0;
//下标为行号,元素为列号,记录皇后位置
int[] pos = new int[n];
Arrays.fill(pos, 0);
//递归
recursion(n, 0, pos);
return res;
}
}
本文共计476个文字,预计阅读时间需要2分钟。
1. 简述:描述N皇后问题是指在一个n*n的棋盘上放置n个皇后,要求任意两个皇后不在同一行、同一列,也不在同一直线上。要求:给出一个整数n,返回n皇后的放置方法数。
数据范围:要求:空间复杂度低。
1.简述:
描述N皇后问题是指在 n * n的棋盘上要摆 n个皇后,要求:任何两个皇后不同行,不同列也不在同一条斜线上,求给一个整数 n,返回 n皇后的摆法数。
数据范围:
要求:空间复杂度,时间复杂度
例如当输入4时,对应的返回值为2,
对应的两种四皇后摆位如下图所示:
示例1输入:
1返回值:
1示例2输入:
返回值:
922.代码实现:
import java.util.*;public class Solution {
private int res;
//判断皇后是否符合条件
public boolean isValid(int[] pos, int row, int col){
//遍历所有已经记录的行
for(int i = 0; i < row; i++){
//不能同行同列同一斜线
if(row == i || col == pos[i] || Math.abs(row - i) == Math.abs(col - pos[i]))
return false;
}
return true;
}
//递归查找皇后种类
public void recursion(int n, int row, int[] pos){
//完成全部行都选择了位置
if(row == n){
res++;
return;
}
//遍历所有列
for(int i = 0; i < n; i++){
//检查该位置是否符合条件
if(isValid(pos, row, i)){
//加入位置
pos[row] = i;
//递归继续查找
recursion(n, row + 1, pos);
}
}
}
public int Nqueen (int n) {
res = 0;
//下标为行号,元素为列号,记录皇后位置
int[] pos = new int[n];
Arrays.fill(pos, 0);
//递归
recursion(n, 0, pos);
return res;
}
}

