1
vector<vector<vector<int>>> dp;3
int dx[4] = {0, 0, 1, -1};4
int dy[4] = {1, -1, 0, 0};8
int fun(int i, int j, int n, int m, int k) {9
if (i < 0 || j < 0 || i == n || j == m)14
if (dp[i][j][k] != -1) return dp[i][j][k];17
for (int c = 0; c < 4; c++) {18
int ni = i + dx[c], nj = j + dy[c];19
ans = (ans + fun(ni, nj, n, m, k - 1)) % mod;22
return dp[i][j][k] = ans;25
int findPaths(int m, int n, int maxMove, int startRow, int startCol) {26
dp = vector<vector<vector<int>>>(m, vector<vector<int>>(n, vector<int>(maxMove + 1, -1)));28
return fun(startRow, startCol, m, n, maxMove);