题解 | #机器人的运动范围#
机器人的运动范围
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)
}
美团公司福利 3017人发布