不同路径

题目理解

1.关于返回值
如果数组dp[m][n]代表到(m,n)的路径,那它必然是一个整数,在开始分配空间的时候我们记录的是自(0,0)到(m,n)的一个块,如果m=3,n=2,这个块实际上是一个3行2列的数组:初始化是:
0,0
0,0
0,0
结果数组是这样的:
1,1
1,2
1,3
所以初始化dp:vector<vector> dp(m,vector(n,0));
构成规律就是每一个数值是其上方和左面的数的和。这样就不难理解为什么要给最左边一列和最上面一行赋1了。(因为左边没有左边,上面没有上边)

for(i=0;i<m;i++) dp[i][0]=1;
   for(j=0;j<n;j++) dp[0][j]=1;

2.关于循环条件
上面就是dp[m-1][n];左边就是dp[m][n-1].

不同路径2 机器人走方格遇到障碍物了

如果某个格子存在障碍物,那么它会影响下面和右边。

posted on 2025-12-13 20:57  FAfa_C++  阅读(1)  评论(0)    收藏  举报