题解 | #Sudoku#

Sudoku

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

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    const arr = [];
    while ((line = await readline())) {
        arr.push(line.split(" ").map((item) => parseInt(item)));
    }
    const vaild = (i, j, v) => {
        for (let m = 0; m < 9; m++) {
            if (arr[i][m] == v && m != j) {
                return false;
            }
            if (arr[m][j] == v && m != i) {
                return false;
            }
        }
        for (
            let m = Math.floor(i / 3) * 3;
            m < Math.floor(i / 3 + 1) * 3;
            m++
        ) {
            for (
                let n = Math.floor(j / 3) * 3;
                n < Math.floor(j / 3 + 1) * 3;
                n++
            ) {
                if (arr[m][n] == v && !(m == i && n == j)) {
                    return false;
                }
            }
        }
        return true;
    };
    const f = (i, j) => {
        if(i>=9||j>=9){
            return true;
        }
        if (arr[i][j]) {
            return f(i + Math.floor((j + 1) / 9), (j + 1) % 9);
        }
        for (let m = 1; m <= 9; m++) {
            if (vaild(i, j, m)) {
                arr[i][j] = m;
                if (f(i + (j + 1 >= 9 ? 1 : 0), (j + 1) % 9)) {
                    return true;
                }
            }
        }
        arr[i][j] = 0;
        return false;
    };
    f(0, 0);
    console.log(arr.map((item) => item.join(" ")).join("\n"));
})();

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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