前端算法js:跳格子游戏
生活随笔
收集整理的這篇文章主要介紹了
前端算法js:跳格子游戏
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
// 前端算法js:跳格子游戲
let arrFlag, arrNode, stepAll; // 節(jié)點(diǎn)遍歷狀態(tài),節(jié)點(diǎn)的相鄰啟動點(diǎn)數(shù)組,是否完成所有步驟
function jumpGame2(num, arr) {arrFlag = new Array(num).fill(0); // 初始化節(jié)點(diǎn)狀態(tài)為0 ,1=已經(jīng)遍歷了,死循環(huán);2=該節(jié)點(diǎn)已經(jīng)遍歷完成了stepAll = true; // 默認(rèn)能完成所有節(jié)點(diǎn)arrNode = []; // 相鄰節(jié)點(diǎn)啟用數(shù)組for (let i = 0; i < num; i++) {arrNode.push(arr.filter((el) => el[1] == i).map((elc) => elc[0])); // 將數(shù)組過濾并map成需要的節(jié)點(diǎn)啟用數(shù)組}if (arrNode.some((el) => !el.length)) { // 有沒有默認(rèn)開啟的節(jié)點(diǎn)for (let i = 0; i < num && stepAll; i++) { // 對每隔節(jié)點(diǎn)使用dfs遍歷,判斷是否完成全部節(jié)點(diǎn)if (arrFlag[i] == 0) { // 只有當(dāng)該節(jié)點(diǎn)沒有被遍歷的情況下執(zhí)行dfsdfs(i);}}return stepAll ? "yes" : "no"; // 返回結(jié)果stepAll來自dfs的遍歷處理} else {return "no"; // 如果沒有默認(rèn)開啟的節(jié)點(diǎn)就直接no}
}
function dfs(index) {arrFlag[index] = 1; // 第一步設(shè)置遍歷狀態(tài)為已遍歷let arrNodeChild = arrNode[index]; // 獲取當(dāng)前節(jié)點(diǎn)下的所有啟動節(jié)點(diǎn)for (let j = 0, len = arrNodeChild.length; j < len; j++) { // 遍歷啟動節(jié)點(diǎn)if (arrFlag[arrNodeChild[j]] == 0) { // 如果啟動節(jié)點(diǎn)未啟動狀態(tài)dfs(arrNodeChild[j]); // 繼續(xù)dfsif (!stepAll) { // 若dfs中遍歷到已經(jīng)遍歷過的節(jié)點(diǎn),跳出循環(huán)break;}} else if (arrFlag[arrNodeChild[j]] == 1) { // 若遍歷到已經(jīng)遍歷過的節(jié)點(diǎn),跳出循環(huán)stepAll = false; // 并設(shè)stepAll為false,意思是這個遍歷不成功,并跳出循環(huán)break;}}arrFlag[index] = 2; // 若上面循環(huán)順利完成,意思當(dāng)前節(jié)點(diǎn)及其啟動節(jié)點(diǎn)都已經(jīng)通過dfs,表示該節(jié)點(diǎn)已經(jīng)遍歷完
}
console.log(jumpGame2(3, [[0, 1],[0, 2],])); // yes
console.log(jumpGame2(2, [[1, 0],[0, 1],])); // no
console.log(jumpGame2(4, [[1, 3],[0, 1],[3, 2],[2, 0],])); // no
console.log(jumpGame2(4, [[0, 1],[3, 2],[2, 3],])); // no
console.log(jumpGame2(6, [[0, 1],[0, 2],[0, 3],[0, 4],[0, 5],])); // yes
console.log(jumpGame2(5, [[4, 3],[0, 4],[2, 1],[3, 2],])); // yes
console.log(jumpGame2(4, [[1, 2],[1, 0],])); // yes
總結(jié)
以上是生活随笔為你收集整理的前端算法js:跳格子游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android学习之展示图片资源
- 下一篇: 分享一款教育培训机构学员信息管理系统