牛客题霸 [ 求路径] C++题解/答案
题目描述
一个机器人在m×n大小的地图的左上角(起点,下图中的标记“start"的位置)。
机器人每次向下或向右移动。机器人要到达地图的右下角。(终点,下图中的标记“Finish"的位置)。
可以有多少种不同的路径从起点走到终点?
题解:
原本想递归做,发现复杂度过高
动态规划做法
我们先设置边界,就是沿着边走,每次移动只有一种方案
然后转移方程
dp[i][j]=dp[i-1][j]+dp[i][j-1]
当前格子(i,j),可以是从(i-1,j)走来的,也可以是从(i,j-1)走来的
(应该很好理解)
代码:
class Solution {
public:/*** * @param m int整型 * @param n int整型 * @return int整型*/int uniquePaths(int m, int n) {int dp[m][n];// write code hereif(m<1||n<1)return 0;for(int i=0;i<n;i++)dp[0][i]=1;for(int i=0;i<m;i++)dp[i][0]=1;for(int i=1;i<m;i++){for(int j=1;j<n;j++){dp[i][j] = dp[i-1][j] + dp[i][j-1];}}return dp[m-1][n-1];}
};