数组中是否包含路径

矩阵中的路径

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

这道题写得是真滴难受啊,为啥一维数组和二维数组要混着用呢。。。没太搞懂。
这道题可以使用递归+回溯的方法进行求解
· 递归终止条件为:如果匹配成功则返回true;如果下标越界或者已经访问过或者字符不匹配,则返回false

然后便可以递归地向上下左右寻找是否有匹配的字符,若找到了路径则返回ture,否则返回false;

boolean dfs(int row, int col, int pnt) {
            if(pnt == str.length) return true;
            if (row > rows - 1 || col > cols - 1 || row < 0 || col < 0)
                return false;
            if (vis[row][col] == 1) return false;
            if (this.matrix[row * cols + col] != str[pnt]) return false;
            vis[row][col] = 1;
            boolean f1, f2, f3, f4;
            f1 = dfs(row + 1, col, pnt + 1); // 向下
            f2 = dfs(row - 1, col, pnt + 1); // 向上
            f3 = dfs(row, col + 1, pnt + 1); // 向右
            f4 = dfs(row, col - 1, pnt + 1); // 向左
            vis[row][col] = 0; // 以便下一条路径可以访问
            return f1 || f2 || f3 || f4;
        }


全部评论

相关推荐

01-04 21:30
已编辑
河南工业大学 Java
27届学院本誓死冲击...:下次再发把个人信息隐藏掉,以防有心之人。相关课程删了,荣誉奖项只留蓝桥杯,把蓝桥杯写到教育经历里,按教育经历、实习经历、项目经历、专业技能这个顺序排版
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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