算法训练营day30(回溯总结二刷先回顾这里)

回溯总结

刚刷完,等二刷的时候再总结

都可以跳过的话,学一个这个N皇后吧,上课水过这个,蛮想学懂的哈哈哈

332.重新安排行程 

二刷学

51. N皇后 

class Solution {
    List> res = new ArrayList<>();
    public List> solveNQueens(int n) {
        char[][] chessboard = new char[n][n];
        for (char[] c : chessboard) {
            //填充数组api
            Arrays.fill(c, '.');
        }
        backTracking(chessboard,n,0);
        return res;
    }
    void backTracking(char[][] chessboard,int n ,int row){
        if(row==n){//到叶子节点了
            res.add(Array2List(chessboard));
            return;
        }
        for(int i =0;i list = new ArrayList<>();

        for (char[] c : chessboard) {
            //char转String的api
            list.add(String.copyValueOf(c));
        }
        return list;
    }

    public boolean isvalid(int row, int col, int n, char[][] chessboard) {
        // 检查列
        for (int i=0; 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;
    }
}

37. 解数独 

二刷学

你可能感兴趣的:(算法)