C++/代码:

矩阵中的路径

http://www.nowcoder.com/questionTerminal/c61c6999eecb4b8f88a98f66b273a3cc

C++/代码:

class Solution {
public:
    int col,row; //定义全局变量
    bool hasPath(char* matrix, int rows, int cols, char* str){ //char* matrix 二维数组用一维数组表示
        col = cols, row = rows; //为全局变量赋值
        for (int i = 0;i < rows;i ++) //先遍历二维数组
            for (int j = 0;j < cols; j ++)
                if (dfs(matrix, str, 0,i,j)) return true; //查找第一个字符位置,若存在路径则返回true,否则继续循环,查找下个字符
        return false;
    }
    bool dfs(char* matrix, char* str, int u, int x, int y) {
        if (u == strlen(str)) return true; //如果字符串的长度等于搜索长度u则返回true
        if (matrix[x*col+y] != str[u]) return false; //如果有元素不等则返回false
        int dx[4] = {-1, 0, 1, 0},dy[4] = {0, 1, 0, -1}; //(-1,0)up,(0,1)right,(1,0)down,(0,-1)left
        char t = matrix[x*col+y]; //将访问过的路径字符赋值给t
        matrix[x*col+y] = '*'; //将访问国的路径赋值为'*'
        for(int i = 0; i < 4; i ++){
            int a = x +dx[i],b = y +dy[i]; //进行上、下、左、右变化后的x,y值
            if(dfs(matrix, str, u + 1, a, b)) return true;
        }
        matrix[x*col+y] = t; //将访问过值放回原矩阵
        return false;
    }
};
全部评论
临时更改元素,避免了申请额外的内存空间
点赞 回复 分享
发布于 2020-07-09 22:58

相关推荐

不愿透露姓名的神秘牛友
03-27 17:55
点赞 评论 收藏
分享
03-27 11:55
上海大学 运营
1900+能进面吗?
offer快到怀里来叭:全a都进不了
投递携程等公司10个岗位 > 携程求职进展汇总
点赞 评论 收藏
分享
02-24 10:34
门头沟学院 Java
已注销:之前发最美的女孩基本爱答不理,发最帅的hr终于有反馈了,女孩子也要自信起来
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务