1#define vi vector<int>2#define vvi vector<vi>3class Solution {4public:5int countPath(vvi &dp, int r, int c, int m, int n) {6if (m == r - 1 || n == c - 1) return 1;78if (dp[m][n] != -1) return dp[m][n];910return dp[m][n] = countPath(dp, r, c, m + 1, n) + countPath(dp, r, c, m, n + 1);11}12int uniquePaths(int m, int n) {13vvi dp(m, vi(n, -1));1415return countPath(dp, m, n, 0, 0);16}17};