题目描述
一个m x n的矩阵,机器人从左上角走到右下角总共有多少种走法。
注:每次只能向下或向右走一格。
递归例程:
public class Solution {
public int uniquePaths(int m, int n) {
if(m < 1||n < 1)
return 0;
return help(0,0,m,n);
}
public int help(int x,int y,int m,int n)
{
if(x == m-1||y == n-1)
return 1;
else
return help(x+1,y,m,n)+help(x,y+1,m,n);
}
}
DP例程:
public int uniquePaths(int m, int n) {
if(m < 1||n < 1)
return 0;
int[][] dp=new int[m][n];
//初始化
for(int j=0;j<n;j++)
dp[m-1][j]=1;
for(int i=0;i<m;i++)
dp[i][n-1]=1;
for(int i=m-2;i>=0;i--)
{
for(int j=n-2;j>=0;j--)
{
dp[i][j]=dp[i+1][j]+dp[i][j+1];
}
}
return dp[0][0];
}