public class Solution {
boolean flag= false;
// 行走路径
int[] x_visit = {0,1,0,-1};
int[] y_visit ={-1,0,1,0};
int visit[][];
public boolean exist(char[][] board, String word) {
int width= board.length;
int height = board[0].length;
visit = new int [width][height];
for (int i = 0; i <width ; i++) {
for (int j = 0; j < height; j++) {
visit[i][j] = 0;
}
}
char[] word_array = word.toCharArray();
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < height ; j++) {
if (flag){
return flag;
}
dfs(board,word_array,i,j,0);
}
}
return flag;
}
public void dfs (char[][] board, char[] word,int i,int j,int k){
visit[i][j] = 1;
if (board[i][j] != word[k]){
return;
}
if (k == word.length-1 ){
flag = true;
return;
}
for (int l = 0; l < 4; l++) {
if ((i+x_visit[l])>=0 && (i +x_visit[l])<4 && (j+y_visit[l])<4&& (j+y_visit[l])>=0 && visit[i][j]==0){
dfs(board,word,i +x_visit[l],j+y_visit[l],k+1);
visit[i +x_visit[l]][j+y_visit[l]] =0;
}
}
visit[i][j] = 0;
return;
}
}