求从左上角走到右下角所需要的多少种走法。
用简单的动态规划吧,不过也没有求最优解的那种。
到达一个点的走法个数只能是从它正上方和左边的走法的个数的和。即dp[i][j]=dp[i-1][j]+dp[i][j-1]其中dp表示的是走法。
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>>dp(m+1,vector<int>(n+1));
for(int ii=1;ii<=m;ii++){
for(int jj=1;jj<=n;jj++){
if(ii-1==0)dp[ii-1][jj]=0;
if(jj-1==0)dp[ii][jj-1]=0;
if(ii==1&&jj==1){dp[ii][jj]=1;continue;}
dp[ii][jj]=dp[ii-1][jj]+dp[ii][jj-1];
}
}
return dp[m][n];
}
};