一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-paths
一个简单的dp,将该dp方程为dp[m][n]=dp[m-1][n]+dp[m][n-1];
dp[1][1]=1;
dp就完事了。
class Solution {
public:
int dp[105][105];
int uniquePaths(int m, int n) {
memset(dp,0,sizeof(dp));
return DP(m,n);
}
int DP(int a,int b)
{
if(a<1||b<1)
return 0;
if(a==1&&b==1)
return 1;
if(dp[a][b]!=0)
return dp[a][b];
dp[a][b]=DP(a-1,b)+DP(a,b-1);
return dp[a][b];
}
};