劍指 Offer 13 機械人的運動範圍

2022-07-08 12:33:13 字數 1614 閱讀 3238

劍指 offer 13. 機械人的運動範圍

問題描述:

地上有乙個m行n列的方格,從座標 [0,0] 到座標 [m-1,n-1] 。乙個機械人從座標 [0, 0] 的格仔開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 [35, 37] ,因為3+5+3+7=18。但它不能進入方格 [35, 38],因為3+5+3+8=19。請問該機械人能夠到達多少個格仔?

示例 1:

輸入:m = 2, n = 3, k = 1

輸出:3

示例 2:

1 <= n,m <= 100

0 <= k <= 20

//dfs

object solution

def dfs(visited: array[array[boolean]], m: int, n: int, k: int, i: int, j: int): int =

def sum(x: int): int =

return sum

}}//bfs

import scala.collection.mutable.queue

import util.control.breaks._

object solution

}return res

}def sum(i: int): int =

return sum

}}

//dfs

func movingcount(m int, n int, k int) int

visited := make(bool, m)

for i := 0; i < m; i++

return dfs(visited, m, n, k, 0, 0)

}func dfs(visited bool, m, n, k, i, j int) int

visited[i][j] = true

return 1 + dfs(visited, m, n, k, i+1, j) + dfs(visited, m, n, k, i, j+1)

} func sum(x int) int

return res

}//bfs

import "container/list"

func movingcount(m int, n int, k int) int

queue := list.new()

queue.pushback(0)

queue.pushback(0)

for (queue.len() > 0)

visited[x][y] = true

res += 1

queue.pushback(x+1)

queue.pushback(y)

queue.pushback(x)

queue.pushback(y+1)

}return res

}func sum(x int) int

return res

}

劍指offer13機械人的運動範圍

地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但它不能進入...

劍指 Offer 13 機械人的運動範圍

題目描述 地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但...

劍指 Offer 13 機械人的運動範圍

地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但它不能進入...