//ma是迷宮
//mb用來(lái)標(biāo)記走過(guò)的路mb.fill(0);
//0表示空地,可通行
//1表示障礙物,走不動(dòng)
//目的地在(x0,y0)
//position=[]
//存放的是現(xiàn)在的位置
//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)?{????
????//結(jié)束條件是抵達(dá)目的地????
????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?(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);
【請(qǐng)大牛指教一二】深度優(yōu)先搜索尋找路線,想打印所有路線的時(shí)候出錯(cuò)
moyemoji
2018-07-26 13:14:37