Number of Ways to Stay in the Same Place After Some Steps LeetCode solution in C++
1class Solution {2public:3int n, MOD = 1e9 + 7;4int numWays(int steps, int arrLen) {5n = arrLen;6vector<vector<int>> memo(steps / 2 + 1, vector<int>(steps + 1, -1));7return dp(memo, 0, steps) % MOD;8}9long dp(vector<vector<int>> &memo, int i, int steps) {10if (steps == 0) return i == 0;11if (i < 0 || i == n || i > steps) return 0;12if (memo[i][steps] != -1) return memo[i][steps];13return memo[i][steps] =14(dp(memo, i, steps - 1) + dp(memo, i - 1, steps - 1) + dp(memo, i + 1, steps - 1)) %15MOD;16}17};