leetcode刷题---62.不同路径

leetcode刷题---62. 不同路径

  • 不同路径
    • 题目
    • 解题思路
    • C++代码讲解
  • 参考文献

立志每天刷leetcode一题,最近面试编程总是被屌。知耻而后勇吧!加油吧,骚年!装逼一下!

不同路径

题目

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
leetcode刷题---62.不同路径_第1张图片

例如,上图是一个7 x 3 的网格。有多少可能的路径?

解题思路

动态规划思路解题
(1)确定状态:dp[i][j]是从第0,0位置走到i,j的位置总的路径数;
(2)确定状态转移方程:假设都知道了所有位置的路径数,当机器人处于位置i,j时,即求dp[i][j]总路径数时,这个状态只能从dp[i-1][j]或者dp[i][-1]转移过来。因为机器人只能向下或者向右走。
(3)确定边界条件:当i0或者j0时,只有一条路可以走。

C++代码讲解

class Solution {

public:
int uniquePaths(int m, int n) {
vector dp(m,vector(n));
for(int i=0; i< m; i++){
for(int j=0; j< n; j++){
if(i0 || j0){
dp[i][j] = 1;
}
else
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
return dp[m-1][n-1];
}
};

参考文献

【1】https://leetcode-cn.com/problems/unique-paths/solution/kan-liao-jue-dui-dong-de-dong-tai-gui-hua-by-stree/

你可能感兴趣的:(leetcode刷题,动态规划)