题解 | #Sudoku#

Sudoku

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

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
let arr = [];
rl.on("line", function (line) {
    arr.push(line.split(" "));
});

rl.on("close", () => {
    // 遍历棋盘行列,填数字,符合条件立即停止
    function getRes() {
        for (let i = 0; i < 9; i++) {
            for (let j = 0; j < 9; j++) {
                if (arr[i][j] !== "0") continue;
                for (let k = 1; k <= 9; k++) {
                    if (isValid(i, j, k + "")) {
                        arr[i][j] = k + "";
                        if (getRes()) {
                            return true;
                        }
                        arr[i][j] = "0";
                    }
                }
                return false;
            }
        }
        return true;
    }
    getRes();
    for (let i = 0; i < 9; i++) {
        console.log(arr[i].join(" "));
    }
});

// 判断每行,每列,每个九宫格是否符合要求
function isValid(row, column, num) {
    for (let i = 0; i < 9; i++) {
        if (arr[i][column] === num) return false;
        if (arr[row][i] === num) return false;
    }
    let startRow = ~~(row / 3) * 3;
    let startColumn = ~~(column / 3) * 3;
    for (let i = startRow; i < startRow + 3; i++) {
        for (let j = startColumn; j < startColumn + 3; j++) {
            if (arr[i][j] === num) return false;
        }
    }
    return true;
}

全部评论

相关推荐

Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
07-09 18:33
门头沟学院 Java
这么逆天每年都有人去???&nbsp;填多益网申就是大型的服从性测试
鲁大牛:辅导员在群里发了这个公司我就申了一下。网申居然要写当场开摄像头写两篇不少于三百字的作文。太逆天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务