const solveSudoku = (board) => {
let success = false;
const N = 9; //阶数
const D='.';//占位符
const row = {
}; //缓存行
const col = {
}; //缓存列
const box = {
}; //缓存块
//以上三个缓存用来排除,并且持续维护,每个里面有至多9个栈
//初始化一个拷贝二维数组
const cb = new Array(N).fill(0).map((c) => new Array(N).fill(D));
//初始化字符串1-9的枚举
const emnu = new Array(N).fill(0).map((c, i) => i + 1 + "");
//封装一个根据坐标转化成第k块的函数
const getk = (i, j) => (((i / 3) | 0) * 3 + j / 3) | 0;
//fx函数用来获取拷贝二维数组或者单元格的排除数组
const fx = (i, j) => {
//如果本来九宫格有数字就用它,没有则说明是需要填的
if (cb[i][j][0] !== D) return cb[i][j];
//过滤得到单元格可能出现的数字
return emnu.filter((item) => filter(i, j, item));
};</
js的数独游戏(dfs)
最新推荐文章于 2024-06-11 02:24:07 发布