题目描述
A robot is located at the top-left corner of a m x n grid (marked
‘Start’ in the diagram below).The robot can only move either down or right at any point in time. The
robot is trying to reach the bottom-right corner of the grid (marked
‘Finish’ in the diagram below).How many possible unique paths are there?
Code
class Solution {
private:
int flag[100][100];
void dfs(int m, int n, int &v, int maxm, int maxn)
{
if (flag[m][n] != 0)
{
v += flag[m][n];
return;
}
if (m == maxm - 1 && n == maxn - 1)
{
v++;
return;
}
if (m == maxm - 1)
{
int temp = v;
dfs(m, n + 1, v, maxm, maxn);
flag[m][n] = v - temp;
return;
}
else if (n == maxn - 1)
{
int temp = v;
dfs(m + 1, n, v, maxm, maxn);
flag[m][n] = v - temp;
return;
}
else
{
int temp = v;
dfs(m + 1, n, v, maxm, maxn);
dfs(m, n + 1, v, maxm, maxn);
flag[m][n] = v - temp;
return;
}
}
public:
int uniquePaths(int m, int n)
{
memset(flag, 0, sizeof(flag));
int v = 0;
dfs(0, 0, v, m, n);
return v;
}
};