js的数独游戏(dfs),大佬推荐,开发前端基础

//下面开始才是运行流程

//先便利原二维数组,得到缓存row、col、box、cb,如果是’.‘就给个[’.']

let start = 0; //start优化开始跳过最开始的一串原始数字

let first = true; //用来判断是否经历过空单元格

for (let i = 0; i < N; i++) {

for (let j = 0; j < N; j++) {

let cur = board[i][j];

if (first) start = i * N + j;

if (cur !== D) {

if (!filter(i, j, cur)) return(‘不是有效数独’)

add(i, j, cur)

cb[i][j] = [cur];

} else {

first = false;

cb[i][j] = [D];

}

}

}

//深度递归函数,以index序号0-80为递归依据

//每个单元格根据fx函数拿到nums数组

const dfs = (index) => {

//根据序号拿到坐标值

let [x, y] = [(index / N) | 0, index % N | 0];

const nums = fx(x, y);

//nums返回的数组可能长度为0、1、或者多个,要么来源于初始,要么来源于cb

//如果是0说明已经没有选择了(题目中表示一定有唯一解,所以可以忽略)

//如果是1说明只能选择这个

//进入循环

for (let i = 0; i < nums.length; i++) {

//将这个数字加入缓存排除

add(x, y, nums[i]);

board[x][y] = nums[i];

//如果只有一个数字,到了终点,说明结束了

if (index === N * N - 1 && nums.length === 1) {

success = true;

return true;

}

//如果之后的递归都返回true

if (dfs(index + 1)) return true;

//如果不满足递归正确的条件,则说明现在为止的数字都是不对的

//恢复board的区域并弹出缓存

board[x][y] = cb[x][y][0];

pop(x, y);

}

return false;

};

dfs(start);

if (!success) return ‘对不起,解不出来~~~’

return board;

};

const ax=[

[“5”, “.”, “.”, “.”, “7”, “.”, “.”, “.”, “.”],

[“6”, “.”, “.”, “1”, “9”, “5”, “.”, “.”, “.”],

[“.”, “9”, “8”, “.”, “.”, “.”, “.”, “6”, “.”],

[“8”, “.”, “.”, “.”, “6”, “.”, “.”, “.”, “3”],

[“4”, “.”, “.”, “8”, “.”, “3”, “.”, “.”, “1”],

[“7”, “.”, “.”, “.”, “2”, “.”, “.”, “.”, “6”],

[“.”, “6”, “.”, “.”, “.”, “.”, “2”, “8”, “.”],

[“.”, “.”, “.”, “4”, “1”, “9”, “.”, “.”, “5”],

[“.”, “.”, “.”, “.”, “8”, “.”, “.”, “7”, “.”],

];

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

专业技能

一般来说,面试官会根据你的简历内容去提问,但是技术基础还有需要自己去准备分类,形成自己的知识体系的。简单列一下我自己遇到的一些题

最近得空把之前遇到的面试题做了一个整理,包括我本人自己去面试遇到的,还有其他人员去面试遇到的,还有网上刷到的,我都统一的整理了一下,希望对大家有用。

其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器等等

由于文章篇幅有限,仅展示部分内容

18166371)**

最近得空把之前遇到的面试题做了一个整理,包括我本人自己去面试遇到的,还有其他人员去面试遇到的,还有网上刷到的,我都统一的整理了一下,希望对大家有用。

其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器等等

由于文章篇幅有限,仅展示部分内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值