领扣LintCode算法问题答案-1835. 停在原地的方案数1

    科技2022-08-04  105

    领扣LintCode算法问题答案-1835. 停在原地的方案数1

    目录

    1835. 停在原地的方案数1描述样例 1:样例 2:样例 3: 题解鸣谢

    1835. 停在原地的方案数1

    描述

    有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。

    每一步操作中,你可以将指针向左或向右移动 11 步,或者停在原地(指针不能被移动到数组范围外)。

    给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数。

    由于答案可能会很大,请返回方案数 模 109 + 7 后的结果。

    1 ≤ steps ≤ 151 <= arrLen <= 106 ​​

    样例 1:

    输入: 3 2 输出:4 说明:3 步后,总共有 4 种不同的方法可以停在索引 0 处。 向右,向左,不动 不动,向右,向左 向右,不动,向左 不动,不动,不动

    样例 2:

    输入: 2 4 输出:2 说明:2 步后,总共有 2 种不同的方法可以停在索引 0 处。 向右,向左 不动,不动

    样例 3:

    输入: 4 2 输出:8

    题解

    public class Solution { /** * @param steps: steps you can move * @param arrLen: the length of the array * @return: Number of Ways to Stay in the Same Place After Some Steps */ public int numWays(int steps, int arrLen) { // write your code here return numWays(steps, arrLen, 0); } public int numWays(int steps, int arrLen, int cur) { // write your code here if (cur < 0 || cur >= arrLen) { return 0; } if (steps == 0) { if (cur == 0) { return 1; } return 0; } if (cur > steps) { return 0; } return numWays(steps - 1, arrLen, cur) + numWays(steps - 1, arrLen, cur - 1) + numWays(steps - 1, arrLen, cur + 1); } }

    原题链接点这里

    鸣谢

    非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。 欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

    Processed: 0.010, SQL: 8