这一题,我刚开始写了一个暴力写法,就是每次要不走下,要不走右,当然要控制边界,于是我想到了递归。。。
于是就超出了时间限制,然后我就开始想有没有更好的思路,结果想了一会,发现没想到,
于是看了下题解,原来是动态规划,这类算法我需要好好补一补
就是每一次的这个节点得到的路数,一定是左边或者是上边的路数加起来的和;
即 a[i][j] =a[i-1][j] +a[i][j-1];
然而边界处的路数一定是一,从而刚开始就设为1
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> dp(m, vector<int>(n, 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];
}
};