题解 | #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;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:27
明天又是董事长面,啥时候是个头啊
积极向上的林同学:董事长亲自面试
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:22
怎么这么多逆天求职者,救救我救救我救救我😭
flmz_Kk:哈哈哈哈哈哈,这么多求职者,肯定有那一两个逆天的
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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