题目描述
n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。
提示:
1 <= n <= 9
皇后彼此不能相互攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或斜线上。
力扣:51.N皇后
上面是当 N = 4 时 ,所有满足条件的放置方案。
这是一道非常经典的回溯问题,说一下大致思路
1、一行一行向下判断
2、判断当前位置,同一列是否有皇后
3、判断当前位置,左上角是否有皇后
4、判断当前位置,右上角是否有皇后
为什么只需要判断左上角, 右上角 呢? 因为按照 1 中所说,自上向下,因此只需要判断已经防止过 N 皇后的行,是否存在冲突。
class Solution {
public List<List<String>> solveNQueens(int n) {
char[][] chess = new char[n][n];
for(int i = 0 ; i < n ; i ++)
for(int j = 0 ; j < n ; j ++)
chess[i][j] = '.';
List<List<String>> result = new ArrayList<