class Solution { public: int f(int i ,int j,vector<vector<int>>&dp){ if(i == 0 && j == 0) return 1; if(i<0 || j<0) return 0 ; if( dp[i][j]!= -1) return dp[i][j]; int up = f(i-1, j, dp); int left = f(i , j-1,dp); return dp[i][j] = up+left; } int uniquePaths(int m, int n) { vector<vector<int>>dp( m , vector<int>(n,-1)); return f(m-1, n-1,dp); } };