题解 | #矩阵中的路径#

矩阵中的路径

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

经典回溯法,注意成功出口在失败出口之前即可。



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param matrix char字符型二维数组 
     * @param word string字符串 
     * @return bool布尔型
     */
    public boolean backtrack(char[][]matrix,String word,int index,int i,int j){
        //回溯法求解
         if(index==word.length()){
            //成功的出口
            return true;
        }
        //搜索到边界了
        if(i<0||i>=matrix.length||j<0||j>=matrix[0].length) return false;

        if(word.charAt(index)=='&'){
            //已经搜索过了
            return false;
        }
        if(word.charAt(index)==matrix[i][j]){
            //当前字符匹配,搜索邻近结点
            char temp=matrix[i][j];
            //标记为已经搜索过
            matrix[i][j]='&';
            boolean res=backtrack(matrix,word,index+1,i-1,j)||
                    backtrack(matrix,word,index+1,i+1,j)||
                    backtrack(matrix,word,index+1,i,j-1)||
                    backtrack(matrix,word,index+1,i,j+1);
            //恢复
            matrix[i][j]=temp;
            return res;
        }
        return false;
    }

    public boolean hasPath (char[][] matrix, String word) {
        // write code here
        for(int i=0;i<matrix.length;i++){
            for(int j=0;j<matrix[0].length;j++)
                if(backtrack(matrix,word,0,i,j)){
                    return true;
                }
        }
        return false;
        
    }
}
全部评论

相关推荐

07-10 14:08
已编辑
江西农业大学 Java
念旧select:做完把项目放到自己硬盘里给他看,看完拷走
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务