题解 | #机器人的运动范围#

机器人的运动范围

http://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8

package main

func digitalSum(num int) int{
    var sum int
    for num > 0 {
        sum += num % 10
        num /= 10
    }
    return sum
}

func dfs(threshold int, rows int, cols int, x int, y int, isVisited [][]bool) int {
    if x < 0 || y < 0 || x >= rows || y >= cols || isVisited[x][y] || digitalSum(x) + digitalSum(y) > threshold {
           return 0
    }
    isVisited[x][y] = true
    return 1 + dfs(threshold, rows, cols, x - 1, y, isVisited) + dfs(threshold, rows, cols, x + 1, y, isVisited) + dfs(threshold, rows, cols, x, y - 1, isVisited) + dfs(threshold, rows, cols, x, y + 1, isVisited)
}

func movingCount(threshold int, rows int, cols int) int {
    if threshold < 0 || rows <= 0 || cols <= 0 {
        return 0
    }
    isVisited := make([][]bool, rows)
    for i := 0; i < rows; i ++ {
        isVisited[i] = make([]bool, cols)
    }
    return dfs(threshold, rows, cols, 0, 0, isVisited)
}
全部评论
只需要递归右边和下面的位置即可
点赞 回复 分享
发布于 2022-08-09 11:05

相关推荐

Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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