AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

AcWing 23. Go 题解 矩阵中的路径    原题链接    中等

作者: 作者的头像   丶Axe ,  2019-11-12 17:58:30 ,  阅读 431


0


救救孩子吧,从俭入奢易,从奢入俭难!

func hasPath(matrix [][]byte, str string) bool {
    if len(matrix) == 0 || len(matrix[0]) == 0 || len(str) == 0 {
        return false
    }
    m, n := len(matrix), len(matrix[0])
    strsp := []byte(str)
    state := make([][]int, m) 
    for i := range state {state[i] = make([]int, n)}
    for i := 0; i < m; i++ {
        for j := 0; j < n; j++ {
            if dfs(matrix, state, i, j, strsp, 0) {
                return true
            }
        }
    }
    return false
}

func dfs(matrix [][]byte, state [][]int, i int, j int, strsp []byte, pos int) bool {
    m, n := len(state), len(state[0])
    if 0 <= i && i < m && 0 <= j && j < n && state[i][j] == 0 {
        ret := false
        state[i][j] = 1
        if matrix[i][j] == strsp[pos] {
            if pos == len(strsp) - 1 {
                return true
            }
            ret = dfs(matrix, state, i, j+1, strsp, pos+1) ||
            dfs(matrix, state, i, j-1, strsp, pos+1) ||
            dfs(matrix, state, i+1, j, strsp, pos+1) ||
            dfs(matrix, state, i-1, j, strsp, pos+1)
        }
        if ret == false { state[i][j] = 0 }
        return ret
    }
    return false
}

0 评论

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息