大小测试都过了
public boolean exist(char[][] board, String word) {
if (board==null || board.length==0 || board[0].length==0) return
false;
for (int i=0; ifor (int j=0; jif (board[i][j]==word.charAt(0)) {
boolean[][] used = new boolean[board.length][board[0].
length];
used[i][j] = true;
if (walk(board, i, j, word, 1, used)) return true;
}
}
}
return false;
}
public boolean walk(char[][] board, int x, int y, String word, int
nextChar, boolean[][] used) {
if (nextChar==word.length()) return true;
if (x>0) {
if (board[x-1][y]==word.charAt(nextChar) && !used[x-1][y]) {
used[x-1][y] = true;
if (walk(board, x-1, y, word, nextChar+1, used)) {return
true;}
else used[x-1][y] = false;
}
}
if (xif (board[x+1][y]==word.charAt(nextChar) && !used[x+1][y]) {
used[x+1][y] = true;
if (walk(board, x+1, y, word, nextChar+1, used)) return true;
else used[x+1][y] = false;
}
}
if (y>0) {
if (board[x][y-1]==word.charAt(nextChar) && !used[x][y-1]) {
used[x][y-1] = true;
if (walk(board, x, y-1, word, nextChar+1, used)) return true;
else used[x][y-1] = false;
}
}
if (yif (board[x][y+1]==word.charAt(nextChar) && !used[x][y+1]) {
used[x][y+1] = true;
if (walk(board, x ,y+1, word, nextChar+1, used)) return true;
else used[x][y+1] = false;
}
}
return false;
}