不同路径一(无障碍物)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
解法一 直接递归
class Solution {
public:
int UniquePaths(int m,int n,int p,int q)
{
if(p==m||q==n)
return 1;
return UniquePaths(m,n,p+1,q)+UniquePaths(m,n,p,q+1);
}
int uniquePaths(int m, int n) {
return UniquePaths(m,n,1,1);
}
};
解法二 带备忘录递归
class Solution {
public:
int UniquePaths(int m,int n,int p,int q)
{
static int square[101][101];
for(int i=0;i