题解 | #Sudoku#

Sudoku

https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1

import java.util.Scanner;

public class Main {
    static final int N = 9;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[][] sudoku = new int[N][N];
        input(sudoku, in);
        backtrackSudoku(sudoku);
        output(sudoku);
    }

    static boolean backtrackSudoku(int[][] sudoku) {
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                if (sudoku[i][j] != 0) {
                    continue;
                }
                for (int k = 1; k <= N; k++) {
                    if (isValid(sudoku, i, j, k)) {
                        sudoku[i][j] = k;
                        if (backtrackSudoku(sudoku)) {
                            return true;
                        }
                        sudoku[i][j] = 0;
                    }
                }
                return false;
            }
        }
        return true;
    }

    static boolean isValid(int[][] sudoku, int i, int j, int val) {
        for (int k = 0; k < N; k++) {
            if (sudoku[k][j] == val || sudoku[i][k] == val) {
                return false;
            }
        }
        int m = (i / 3) * 3, n = (j / 3) * 3;
        for (int x = m; x < m + 3; x++) {
            for (int y = n; y < n + 3; y++) {
                if (sudoku[x][y] == val) {
                    return false;
                }
            }
        }
        return true;
    }

    static void input(int[][] arr, Scanner in) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arr[i][j] = in.nextInt();
            }
        }
    }

    static void output(int[][] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

#华为笔试#
全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务