题解 | #矩阵中的路径#

矩阵中的路径

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

class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param matrix char字符型vector<vector<>> * @param word string字符串 * @return bool布尔型 / bool hasPath(vector<vector >& matrix, string word) { // write code here if(matrix.empty()) { if(word.length()==0) return true; else return false; } int row=matrix.size(); int rll=matrix[0].size(); int len=word.length(); if(len>rowrll) return false; //vector WORD[len+1]; /* for(int i=0;i<len;i++) WORD[i]=word[i]; //将string转为char[] WORD[len]='\0'; */ for(int i=0;i<row;i++) for(int j=0;j<rll;j++) { if(dfs(matrix,word,i,j,0,len)) return true;

        }
    return false;
    
    
}

bool dfs(vector<vector<char>>& matrix,string word,int i,int j,int index,int len)
{
    if(index==len)
        return true;
    if(i<0||i>=matrix.size()||j<0||j>=matrix[0].size())
        return false;
    if(matrix[i][j]==word[index])
    {
        char temp=matrix[i][j];
        matrix[i][j]='.';  //因为是随机回溯查找。可能会使matrix[i][j]被遍历两次,因此暂时更改
        bool res=dfs(matrix,word,i,j+1,index+1,len)||dfs(matrix,word,i+1,j,index+1,len)||dfs(matrix,word,i,j-1,index+1,len)||dfs(matrix,word,i-1,j,index+1,len);
        matrix[i][j]=temp;
        return res;
    }
    else
        return false;
}

};

全部评论

相关推荐

点赞 评论 收藏
分享
我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务