DFS:肯定是超时了啊
class Solution {
int dx[2] = {1, 0};
int dy[2] = {0, 1};
int res = 0;
int m;
int n;
void dfs(int x, int y)
{
if(x == m - 1 && y == n - 1)
{
res++;
return ;
}
for(int i = 0; i < 2; i++)
{
int a = x + dx[i];
int b = y + dy[i];
if(x < m && y < n)
{
dfs(a, b);
}
}
}
public:
int uniquePaths(int m, int n) {
this->m = m;
this->n = n;
dfs(0,0);
return res;
}
};
其实是杨辉三角
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>>dp(m, vector<int>(n, 1)); // 第1行第1列要为1
for(int i = 1; i < m; i++)
{
for(int j = 1; j < n; j++)
{
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
return dp[m-1][n-1];
}
};