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