576.out-of-boundary-paths.go 515 B

1234567891011121314151617181920212223242526
  1. const MOD int = 1000000007
  2. var dy = []int{0, 1, 0, -1}
  3. var dx = []int{1, 0, -1, 0}
  4. func findPaths(m int, n int, N int, i int, j int) int {
  5. var dp [50][50]int
  6. for k := 0; k < N; k++ {
  7. var nxt [50][50]int
  8. for y := 0; y < m; y++ {
  9. for x := 0; x < n; x++ {
  10. for d := 0; d < 4; d++ {
  11. ny, nx := y+dy[d], x+dx[d]
  12. if ny == -1 || ny == m || nx == -1 || nx == n {
  13. nxt[y][x]++
  14. } else {
  15. nxt[y][x] = (nxt[y][x] + dp[ny][nx]) % MOD
  16. }
  17. }
  18. }
  19. }
  20. dp = nxt
  21. }
  22. return dp[i][j]
  23. }