题目链接
深度优先搜索
public class Solution {
char[][]board;
boolean [][]record;
int row;
int colom;
String word;
public boolean exist(char[][] board, String word) {
this.board=board;
this.word=word;
row=board.length;
colom=board[0].length;
record=new boolean[row][colom];
for(int i=0;i<row;i++)
{
for(int j=0;j<colom;j++)
{
if(dfs(i,j,0))
{
return true;
}
}
}
return false;
}
public boolean dfs(int x,int y,int current)
{
if(record[x][y]||board[x][y]!=word.charAt(current))
{
return false;
}
record[x][y]=true;
if(current==word.length()-1)
{
return true;
}
boolean result=false;
if(x-1>=0)
{
result=dfs(x-1,y,current+1);
}
if(result)
{
return true;
}
if(y-1>=0)
{
result=dfs(x,y-1,current+1);
}
if(result)
{
return true;
}
if(x+1<row)
{
result=dfs(x+1,y,current+1);
}
if(result)
{
return true;
}
if(y+1<colom)
{
result=dfs(x,y+1,current+1);
}
if(result)
{
return true;
}
record[x][y]=false;
return false;
}
}