2 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
就像這樣:
let mazeD = [];
for (let y = 0; y < 10; y++) {
let row = [];
for (let x = 0; x < 10; x++) {
row[x] = 999;
}
mazeD[y] = row;
}
mazeD[5][5] = 0;
// BFS function
function flood(x, y, d) {
let queue = [];
let i = 0;
queue.push([y, x]);
while (i < queue.length) {
[x,y] = queue[i,i];
let fillArr = [
[+y - 1, +x],
[+y, +x - 1],
[+y, +x + 1],
[+y + 1, +x],
];
if ((x < 10) && (y < 10) && x >=0 && y>=0)
{
for (let [yy, xx] of fillArr)
{
if(yy >=0 && yy < 10 && xx>=0 && xx<10)
{
if (mazeD[yy][xx] == 999)
{
queue.push([yy, xx]);
mazeD[yy][xx] = mazeD[y][x]+1;
console.log(xx,yy,mazeD[y][x]+1);
}
if(xx == 0 && yy == 0){
return;
}
}
}
}
i++;
}
}
flood(5, 5, 0);
console.log(mazeD);

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
我認(rèn)為您可能在這一行中遇到問(wèn)題:
queue.shift()
似乎您永遠(yuǎn)不會(huì)讀取存儲(chǔ)在隊(duì)列中的值,因此循環(huán)中的坐標(biāo)永遠(yuǎn)不會(huì)更新,這意味著您總是在檢查相同的位置。您可能希望將 的值賦給queue.shift()
一個(gè)變量并使用這些坐標(biāo)繼續(xù)搜索。
添加回答
舉報(bào)