题目描述:
参考代码:
public boolean hasPath(char[] matrix, int rows, int cols, char[] word)
{
if(matrix == null || cols < 0 || rows < 0)return false;
//转换为二维数组
int k = 0;
char[][] board = new char[rows][cols];
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
board[i][j] = matrix[k ++];
}
}
//然后进行问题解决
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
if(dfs(board, word, i, j, 0))return true;
}
}
return false;
}
public boolean dfs(char[][] board, char[] word, int i, int j, int k){
if(i >= board.length || i < 0 || j >= board[0].length || j < 0 || board[i][j] != word[k])return false;
if(k == word.length - 1)return true;
char temp = board[i][j];
board[i][j] ='/';
boolean res = dfs(board, word, i + 1, j, k + 1) || dfs(board, word, i, j + 1, k + 1) || dfs(board, word, i - 1, j, k + 1) || dfs(board, word, i, j - 1, k + 1);
board[i][j] = temp;
return res;
}
注意:
牛客网函数参数matrix为一维数组,所以这里先转化为二维数组,然后进行处理。