LeetCode 576 出界的路经数
题目地址
解题思路
利用三维数组实现动态规划,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 出界的路经数相关推荐
- Leetcode 576. 出界的路径数
Leetcode 576. 出界的路径数 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/out-of-boundary ...
- LeetCode 576. 出界的路径数(动态规划)
文章目录 1. 题目 2. 解题 1. 题目 给定一个 m × n 的网格和一个球. 球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上.下.左.右四个方向上移动使球穿过网格边界. ...
- 576. 出界的路径数
576. 出界的路径数 给你一个大小为 m x n 的网格和一个球.球的起始坐标为 [startRow, startColumn] .你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格 ...
- leetcode 576. Out of Boundary Paths | 576. 出界的路径数(暴力递归->傻缓存->dp)
题目 https://leetcode.com/problems/out-of-boundary-paths/ 题解 经典的 从递归到 dp,不多说,上代码. class Solution {publ ...
- LeetCode(9.回文数)JAVA
LeetCode(9.回文数) 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输 ...
- java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)
首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...
- Leetcode:0002(两数之和)
LeetCode:0002(两数之和) 题目描述:给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这 ...
- LeetCode 09:回文数(Java实现)
LeetCode 09:回文数(Java实现) 题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121 输出: true 示例 2:输 ...
- LeetCode高频题29. 两数相除:不用加减乘除号,求加法,减法,乘法,除法
LeetCode高频题29. 两数相除 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM竞赛 ...
最新文章
- 二、深度学习数据增强方法汇总
- Android--视频播放器
- 2016年股市上扬将一路顺畅
- Winsows VISTA启动过程解析
- 如何保证消息不被重复消费~~~~~(如何保证消息队列的幂等性)
- springboot怎么返回404_SpringBoot(二十)_404返回统一异常处理结果
- Ubuntu命令行和图形界面选择设置
- 声卡loopback有什么用_萌新做音乐那点事 | 外置专业声卡的选择方法与推荐
- python删除文件_python删除指定类型(或非指定)的文件实例详解
- mysqladmin命令详解
- android定时截取屏幕内容,Android 截取手机屏幕两种实现方案解析
- 字节码指令之方法调用与返回指令
- 器件选型电源篇-LDO器件选型
- 平面设计配色方案有哪些
- C++产生随机数字最全教程
- 衡山湘大学计算机学校,南岳衡山烧香求学业显灵感恩南岳大庙祈福考上985双一流重点大学...
- SLAM十四讲ch5 joinMap错误解决
- afterlogic webmail lite php,AfterLogic WebMail最新版任意文件包含 | CN-SEC 中文网
- 爬虫练习(2)-- 使用正则匹配爬取果壳问答
- css中flex布局固定宽度盒子被压缩问题解决