LeetCode刷题-----N皇后问题

LeetCode刷题-----N皇后问题(回溯法)

51. N 皇后
题目描述:
n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。

思路:枚举每一行,每一列,判断是否放的下

class Solution {
    List>list=new LinkedList<>();
    public List> solveNQueens(int n) {
        //n×n大小的棋盘
        char board[][]=new char[n][n];
        //将所有的格子填充为'.''
        for(char[] ch:board)
            Arrays.fill(ch, '.');
        backtrack(board,0);
        return list;
    }
    //枚举每一行
    void backtrack(char [][]board,int r){
        //ans
        if(r==board.length){
            Listans=new ArrayList<>();
            for(char chs[]:board){
                ans.add(new String(chs));
            }
            list.add(ans);
            return;
        }
        //枚举每一列
        for(int i=0;i=0&&j>=0;i--,j--){
            if(board[i][j]=='Q')return false;
        }
        for(int i=r,j=c;i>=0&&j

你可能感兴趣的:(LeetCode,leetcode,算法,数据结构)