牛客题霸 [ 求路径] C++题解/答案

牛客题霸 [ 求路径] 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 here
        if(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];
    }
};
posted @ 2020-11-07 00:03  回归梦想  阅读(179)  评论(0编辑  收藏  举报