题解 | #迷宫问题#回溯(注意去重)
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
while (str = readline()) { const [m, n] = str.split(' ').map(Number); const nums = []; for (let i = 0; i < m;i++) { nums.push(readline().split(' ')) } const path = []; function backtrack (i, j) { if (i === m - 1 && j === n - 1) { path.push(`${i},${j}`); path.forEach((v) => { console.log(`(${v})`); }); return; } if (path.includes(`${i},${j}`)) { // 去重 return; } path.push(`${i},${j}`); if (i >= 1 && nums[i - 1][j] === '0') { backtrack(i - 1, j); } if (j >= 1 && nums[i][j - 1] === '0') { backtrack(i, j - 1); } if (j < n - 1 && nums[i][j + 1] === '0') { backtrack(i, j + 1); } if (i < m - 1 && nums[i + 1][j] === '0') { backtrack(i + 1, j); } path.pop(); } backtrack(0, 0); }