leetcode 37 数独

private boolean[][] r = new boolean[9][9];
    private boolean[][] c = new boolean[9][9];
    private boolean[][][] x = new boolean[3][3][9];
    private boolean valid = false;
    private List<int[]> list = new ArrayList<int[]>();

public void solveSudoku(char[][] board) {
        for(int i = 0; i < 9; i++) {
            for(int j = 0; j < 9; j++) {
                if(board[i][j] == '.') {
                    list.add(new int[] {i,j});
                }
                else {
                    int num = Integer.parseInt(String.valueOf(board[i][j])) - 1;
                    r[i][num] = c[j][num] = x[i/3][j/3][num] = true;
                }
            }
        }
        dfs(board, 0);
    }
    private void dfs(char[][] board, int pos) {
        if(pos == list.size()) {
            valid = true;
            return;
        }
        int[] thisPos = list.get(pos);
        int m = thisPos[0], n = thisPos[1];
        for(int i = 0; i < 9 && !valid; i++) {
            if(!r[m][i] && !c[n][i] && !x[m/3][n/3][i]) {
                r[m][i] = c[n][i] = x[m/3][n/3][i] = true;
                board[m][n] = (char) (i + '0' + 1);
                dfs(board, pos+1);
                r[m][i] = c[n][i] = x[m/3][n/3][i] = false;
            }
        }
    }

posted @   明卿册  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示