算法1
(y总的方法)
时间复杂度
参考文献
java 代码
class Solution {
public boolean hasPath(char[][] matrix, String str) {
for(int i=0;i<matrix.length;i++)
{
for(int j=0;j<matrix[i].length;j++)
{
if(dfs(matrix,str,0,i,j))//将每一个字母作为开始看是否匹配
return true;
}
}
return false;
}
public boolean dfs(char[][] matrix,String str,int u,int x,int y){
if(matrix[x][y]!=str.charAt(u)) return false;//第一个不匹配,
if(u==str.length()-1) return true;//已经遍历到字符串后一个字母了
int dx[]=new int[]{-1,0,1,0},dy[]=new int[]{0,1,0,-1};//左,上,右,下的左边计算
char t = matrix[x][y];//取出正在比较的值进行标记
matrix[x][y]='#';
//要进行正式的比较的的逻辑
for(int i=0;i<4;i++){//分别计算四个方向
int a =x+dx[i],b =y+dy[i];
if(a>=0&&a<matrix.length&&b>=0&&b<matrix[a].length)
if(dfs(matrix,str,u+1,a,b)) return true;
}
matrix[x][y]=t;
return false;
}
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla