题意:给你一个矩阵,从左上角走到右下角,只能往下或者往右,有几种走法。
思路:简单DP。dp[i][j]表示(i,j)到(n,m)有几种走法。
所以三个边界为:dp[n][m]=0,dp[i][m-1]=1,dp[n-1][i]=1;
其他地方为:dp[i][j]=dp[i+1][j]+dp[i][j+1].
class Solution {
public:
//m 列 n 行
int uniquePaths(int m, int n) {
int dp[110][110];
for (int i = 0; i < n; i++)
{
memset(dp[i], 0, sizeof(dp[i]));
dp[i][m-1] = 1;
}
for (int i = 0; i < m; i++)
dp[n-1][i] = 1;
for (int i = n - 2; i >= 0;i--)
for (int j = m - 2; j >= 0; j--)
{
dp[i][j] = dp[i + 1][j] + dp[i][j + 1];
}
return dp[0][0];
}
};