回溯。(回溯跟深广度搜索非常类似)
1.回溯一般是需要具体答案时使用,且有修改还原某些值;
2.DFS,BFS一般用于只需要一个yes or no的回答时。
var exist = function(board, word) {
if(word.length==0) return true;
if(board.length==0||board[0].length==0) return false;
var m=board.length,n=board[0].length;
var visited=[...Array(m)].map(_=>([...Array(n)].map(_=>false)));
var direction=[[-1,0],[1,0],[0,-1],[0,1]];
for(var x=0;x<m;x++){
for(var y=0;y<n;y++){
if(backtracking(x,y,0)) return true; //因为可能从任一起点开始。
}
}
return false;
function backtracking(i,j,cur){
if(cur==word.length) return true;
if(i<0||i>=m||j<0||j>=n||visited[i][j]||board[i][j]!=word[cur]) return false;
visited[i][j]=true;
for(var k=0;k<4;k++){
if(backtracking(i+direction[k][0],j+direction[k][1],cur+1)) return true;
}
visited[i][j]=false;
return false;
}
};