dfs C++代码

矩阵中的路径

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

 class Solution {
public:

int flag = 0; //标记是否成功搜索到word
int map[205][205]; //标记是否进入过该格子
int rows, columns; 
int moverow[4] = {0, 0, -1, 1};
int movecol[4] = {1, -1, 0, 0}; //四个移动方向
bool hasPath(vector<vector<char> >& matrix, string word) {
    rows = (int) matrix.size();
    columns = (int) matrix[0].size();
    memset(map, 0, sizeof(map));
    for(int i = 0; i < rows; i ++)
        for(int j = 0; j < columns; j ++)
            dfs(matrix, 0, word, i, j);
    if(flag) return 1;
    else return 0;
}
void dfs(vector<vector<char> >& matrix, int lnow, string word, int x, int y) {
    if(flag == 1) return;
    if(lnow == word.length()) {
        flag = 1;
        return;
    }
    if(x < 0 || y < 0 || x >= rows || y >= columns || matrix[x][y] != word[lnow] || map[x][y] != 0) return;
    map[x][y] = 1; //当前格子已搜索过
    lnow ++; //当前格子里字母符合查找需要
    for(int i = 0; i < 4; i ++) {    
        int xx = x + moverow[i], yy = y + movecol[i];
        dfs(matrix, lnow, word, xx, yy); 
    }
    lnow --;
    map[x][y] = 0; //恢复
}

};

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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