
LeetCode 1269 停在原地的方案数[动态规划] HERODING的LeetCode之路
发布日期:2021-05-13 20:58:50
浏览次数:19
分类:精选文章
本文共 1263 字,大约阅读时间需要 4 分钟。
解题思路: 一道简单的二维动态规划题目,dp[i][j] 表示还剩i步,当前所处的j位置,所以我们最后返回的是dp[0][0],初始化dp[steps][0] = 1,状态转移方程,即由从上一步的不移动,往左移,往右移组成,最后简单优化一下,对没有意义的运算(0 + 0 = 0)部分直接跳出,代码如下:
class Solution { public: int numWays(int steps, int arrLen) { // 定义取模的数,最大边界长度 const int num = 1000000007; int maxLen = min(steps / 2, arrLen - 1); // 定义动态规划数组 vector> dp(steps + 1, vector (maxLen + 1)); dp[steps][0] = 1; for(int i = steps - 1; i >= 0; i --) { for(int j = 0; j <= maxLen; j ++) { // 时间优化 if(j - 1 >= 0 && dp[i + 1][j - 1] == 0) { break; } // 原地不动 dp[i][j] = (dp[i][j] + dp[i + 1][j]) % num; if(j - 1 >= 0) { // 右移 dp[i][j] = (dp[i][j] + dp[i + 1][j - 1]) % num; } if(j + 1 <= maxLen) { // 左移 dp[i][j] = (dp[i][j] + dp[i + 1][j + 1]) % num; } } } return dp[0][0]; }};/*作者:heroding链接:https://leetcode-cn.com/problems/number-of-ways-to-stay-in-the-same-place-after-some-steps/solution/cdong-tai-gui-hua-by-heroding-0ql5/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/
发表评论
最新留言
很好
[***.229.124.182]2025年04月22日 11时47分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Golang AES加密
2021-05-15
Puppet的一些奇技淫巧
2021-05-15
foreman源NO_PUBKEY 6F8600B9563278F6
2021-05-15
亚马逊aws文档语法错误
2021-05-15
什么是5G?居然有人用漫画把它讲得如此接地气!
2021-05-15
Spring cloud --分布式配置中心组件Spring Cloud Config
2021-05-15
IDEA的git窗口看不到代码更改界面
2021-05-15
UE4接入Android第三方库2——通过JIN与GameActivity通信
2021-05-15
Unity Job System 2——并行处理数据
2021-05-15
BIG解决保险欺诈问题,开创数字化保险时代
2021-05-15
Apache JMeter5.3 压力测试
2021-05-15