题目:
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?
示例:
输入:m=3,n=2
输出: 3
输入: m=3,n=3
输出: 28
m,n<100;
class Solution {
public:
/*
1.设 dp[M] 表示 当前行m个位置 或者说
上一行 m个位置 的走法个数 注意 是行
2.dp[M] = d[M]+dp[M-1] 该式从右侧开始计算,
由于已经知道第一行的 结果都是 1,那么第二行
的结果就是 第一行 的结果dp[i]加上
当前位置前一列的值dp[i-1]
3.初始化 dp[0,M] = 1;
*/
int uniquePaths(int m, int n) {
int dp[100] = {0}; //注意不能直接往里面填写1,
//否则只生效dp[0]=1
for(int i=0;i<m;i++)
dp[i] = 1;
for(int i=1;i<n;i++)
{
for(int j=1;j<m;j++)
{
dp[j] = dp[j-1]+dp[j];
}
}
return dp[m-1];
}
};