【请大牛指教一二】深度优先搜索寻找到达指定位置的路线,想打印出所有路线的时候出错。
想要输出所有可能的路线,但是结果只输出一种路线,想了很久没想明白 Orz
以下是源码:
//ma是迷宫
//mb用来标记走过的路mb.fill(0);
//0表示空地,可通行
//1表示障碍物,走不动
//目的地在(x0,y0)
//position=[]
//存放的是现在的位置
//direction=[[-1,0],[0,-1],[1,0],[0,1]];
//destination=[x0,y0];
let ma = [[0, 0, 1, 0],
[0, 0, 0, 0],
[0, 0, 1, 0],
[0, 1, 0, 0],
[0, 0, 0, 1]];
let mb = [[1, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]];
let position = new Array(15);
position[0] = [0, 0];
let direction = [[-1, 0], [0, -1], [1, 0], [0, 1]];
let destination = [3, 2];
function maze(step) {
//结束条件是抵达目的地
if (position[step][0] === destination[0] && position[step][1] === destination[1]) {
console.log(position);
return;
}
for (let i = 0; i < 4; i++) {
let new_x = position[step][0] + direction[i][0];
let new_y = position[step][1] + direction[i][1];
if (new_x < 0 || new_x > 4 || new_y < 0 || new_y > 3) {
continue;
}
if (ma[new_x][new_y] === 0 && mb[new_x][new_y] === 0) {
position[step + 1] = [new_x, new_y];
mb[new_x][new_y] = 1;
maze(step + 1);
mb[new_x][new_y] = 0;
}
}
return;
}
maze(0);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
(不懂js)没看出来... 不过你判断ma的语句怎么好像没有.. 你可以输出中间过程自己看一下