import java.util.*;
public class JZ6501 {
private final static int[][] next={{0,-1},{0,1},{1,0},{-1,0}};
public boolean hasPath (char[][] matrix, String word) {
char[] words=word.toCharArray();
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
if(dfs(matrix,words,i,j,0)){
return true;
}
}
}
return false;
}
private boolean dfs(char[][] matrix,char[] words,int i,int j,int index){
if(i>=matrix.length||i<0||j>=matrix[0].length||j<0||matrix[i][j]!=words[index]){
return false;
}
if(index==words.length-1){
return true;
}
char temp=matrix[i][j];
matrix[i][j]='.';
for(int[] n:next){
if(dfs(matrix,words,i+n[0],j+n[1],index+1)){
return true;
}
}
matrix[i][j]=temp;
return false;
}
}
定义了一个静态数组next,得以在矩阵中向四个方向遍历。