JAVA题解 | #矩阵中的路径#

矩阵中的路径

http://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param matrix char字符型二维数组 
 * @param word string字符串 
 * @return bool布尔型
 */

 
public class Solution {
import java.util.*;
public boolean hasPath (char[][] matrix, String word) {
    int len = word.length();
    char start = word.charAt(0);
    int m=0;int n=0;
    boolean[][] lu = new boolean[matrix.length][matrix[0].length];
    for(int i = 0; i<matrix.length;i++)
        for(int j = 0;j<matrix[0].length;j++){
        if(start==matrix[i][j])//先找到第一个字符的位置
        {m=i;n=j;lu[m][n]=true;
         if(dfs(matrix,word,m,n,lu,start,0,0)==true) return true;
         lu[m][n]=false;//可能有多个与首字符相同的字符,所以要将走过的记录还原
         }
        
    }
return false;
}
    private boolean dfs(char[][] matrix,String word,int m, int n,boolean[][] lu,char read,int x,int go){
        
            if(matrix[m][n]==word.charAt(x)&&x==word.length()-1){return true;}
            read = word.charAt(++x);
        boolean re=false;
        for(go=0;go<4;go++){//记录四个方向,我这里加了方向输出,可以观察到走位
            if(m<matrix.length-1&&lu[m+1][n]!=true&&matrix[m+1][n]==read&&go==0)
            {lu[m+1][n]=true;m=m+1;System.out.print("下"); re=dfs(matrix,word,m,n,lu,read,x,go);lu[m][n]=false;m=m-1;}
            if(n<matrix[0].length-1&&lu[m][n+1]!=true&&matrix[m][n+1]==read&&go==1)
            {lu[m][n+1]=true;n=n+1;System.out.print("右"); re=dfs(matrix,word,m,n,lu,read,x,go);lu[m][n]=false;n=n-1;}
            if(m>0&&lu[m-1][n]!=true&&matrix[m-1][n]==read&&go==2)
            {lu[m-1][n]=true;m=m-1;System.out.print("上"); re=dfs(matrix,word,m,n,lu,read,x,go);lu[m][n]=false;m=m+1;}
            if(n>0&&lu[m][n-1]!=true&&matrix[m][n-1]==read&&go==3)
            {lu[m][n-1]=true;n=n-1;System.out.print("左"); re=dfs(matrix,word,m,n,lu,read,x,go);lu[m][n]=false;n=n+1;}
            
            if(re==true) return true;
            

    }
        return false;

    }
}
全部评论

相关推荐

accaacc:2到4k,不是2k到4k,所以年薪是30块
点赞 评论 收藏
分享
11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务