java刷题--51N皇后
Posted Anrys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java刷题--51N皇后相关的知识,希望对你有一定的参考价值。
java刷题--51N皇后
题目
代码
class Solution
List<List<String>> res = new ArrayList<>();
public List<List<String>> solveNQueens(int n)
char[][] chessboard = new char[n][n];
for (char[] c : chessboard)
Arrays.fill(c, '.');
backTrack(n, 0, chessboard);
return res;
public void backTrack(int n, int row, char[][] chessboard)
if (row == n)
res.add(Array2List(chessboard));
return;
for (int col = 0;col < n; col++)
if (isValid (row, col, n, chessboard))
chessboard[row][col] = 'Q';
backTrack(n, row+1, chessboard);
chessboard[row][col] = '.';
public List Array2List(char[][] chessboard)
List<String> list = new ArrayList<>();
for (char[] c : chessboard) list.add(String.copyValueOf(c));
return list;
public boolean isValid(int row, int col, int n, char[][] chessboard)
// 检查列
for (int i=0; i<n; ++i)
if (chessboard[i][col] == 'Q')
return false;
// 检查45度对角线
for (int i=row-1, j=col-1; i>=0 && j>=0; i--, j--)
if (chessboard[i][j] == 'Q')
return false;
// 检查135度对角线
for (int i=row-1, j=col+1; i>=0 && j<=n-1; i--, j++)
if (chessboard[i][j] == 'Q')
return false;
return true;
结果
以上是关于java刷题--51N皇后的主要内容,如果未能解决你的问题,请参考以下文章