题目地址

解题思路

利用三维数组实现动态规划,dp[i][j][k],i表示最大maxMove数,j和k表示从startRow和startColumn移动到这的路径数,如果i+1就是增加一步出界了,就直接累加上count就ok,否则需要更新dp,具体代码如下。

package mainimport "fmt"const mod int = 1e9 + 7var dirs = []struct{ x, y int }{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}func findPath(m, n, maxMove, startRow, startColumn int) (ans int) {dp := make([][][]int, maxMove+1)// 构造dp矩阵for i := range dp {dp[i] = make([][]int, m)for j := range dp[i] {dp[i][j] = make([]int, n)}}// 原始位置的步数肯定为1dp[0][startRow][startColumn] = 1// 相当于从startRow、startColumn这个点以当前最大步数向外扩展直到出界,计算总的count数for i := 0; i < maxMove; i++ {for j := 0; j < m; j++ {for k := 0; k < n; k++ {count := dp[i][j][k]if count > 0 {// 计算i+1次移动的情况for _, dir := range dirs {j1, k1 := j+dir.x, k+dir.y// 没出界的情况,更新dp上下左右的值if j1 >= 0 && j1 < m && k1 >= 0 && k1 < n {dp[i+1][j1][k1] = (dp[i+1][j1][k1] + count) % mod} else { // 出界就加入到总的次数中ans = (ans + count) % mod}}}fmt.Println(dp)}}}//fmt.Println(dp)return
}func main() {m := 1n := 3maxMove := 3startRow := 0startColumn := 1fmt.Println(findPath(m, n, maxMove, startRow, startColumn))
}

LeetCode 576 出界的路经数相关推荐

  1. Leetcode 576. 出界的路径数

    Leetcode 576. 出界的路径数 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/out-of-boundary ...

  2. LeetCode 576. 出界的路径数(动态规划)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个 m × n 的网格和一个球. 球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上.下.左.右四个方向上移动使球穿过网格边界. ...

  3. 576. 出界的路径数

    576. 出界的路径数 给你一个大小为 m x n 的网格和一个球.球的起始坐标为 [startRow, startColumn] .你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格 ...

  4. leetcode 576. Out of Boundary Paths | 576. 出界的路径数(暴力递归->傻缓存->dp)

    题目 https://leetcode.com/problems/out-of-boundary-paths/ 题解 经典的 从递归到 dp,不多说,上代码. class Solution {publ ...

  5. LeetCode(9.回文数)JAVA

    LeetCode(9.回文数) 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输 ...

  6. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...

  7. Leetcode:0002(两数之和)

    LeetCode:0002(两数之和) 题目描述:给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这 ...

  8. LeetCode 09:回文数(Java实现)

    LeetCode 09:回文数(Java实现) 题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121 输出: true 示例 2:输 ...

  9. LeetCode高频题29. 两数相除:不用加减乘除号,求加法,减法,乘法,除法

    LeetCode高频题29. 两数相除 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM竞赛 ...

最新文章

  1. 二、深度学习数据增强方法汇总
  2. Android--视频播放器
  3. 2016年股市上扬将一路顺畅
  4. Winsows VISTA启动过程解析
  5. 如何保证消息不被重复消费~~~~~(如何保证消息队列的幂等性)
  6. springboot怎么返回404_SpringBoot(二十)_404返回统一异常处理结果
  7. Ubuntu命令行和图形界面选择设置
  8. 声卡loopback有什么用_萌新做音乐那点事 | 外置专业声卡的选择方法与推荐
  9. python删除文件_python删除指定类型(或非指定)的文件实例详解
  10. mysqladmin命令详解
  11. android定时截取屏幕内容,Android 截取手机屏幕两种实现方案解析
  12. 字节码指令之方法调用与返回指令
  13. 器件选型电源篇-LDO器件选型
  14. 平面设计配色方案有哪些
  15. C++产生随机数字最全教程
  16. 衡山湘大学计算机学校,南岳衡山烧香求学业显灵感恩南岳大庙祈福考上985双一流重点大学...
  17. SLAM十四讲ch5 joinMap错误解决
  18. afterlogic webmail lite php,AfterLogic WebMail最新版任意文件包含 | CN-SEC 中文网
  19. 爬虫练习(2)-- 使用正则匹配爬取果壳问答
  20. css中flex布局固定宽度盒子被压缩问题解决

热门文章

  1. 就业与保障杂志就业与保障杂志社就业与保障编辑部2022年第3期目录
  2. 教你怎么学好Java
  3. MIMIC-III代码结构和运行
  4. 解决json_encode中文乱码情况
  5. 劉克振:下一波萬物互聯網的創新大機會
  6. 【网络知识】千兆网传输速度125MB/s、百兆网12.5MB/s,码率、比特率、带宽、文件大小M就是MB
  7. 硬盘分区 硬盘分区 硬盘分区
  8. 逗视 iOS客户端应用源码
  9. [工具]更新音乐下载网站,MP3音乐无损音乐下载器
  10. SHA256sum系列命令检测文件完整性