题意:从左上角走到右下角,有多少条不同路径?每次只能往右或者往下走。
分析与思路:首先看第一行的每个位置,都只有一条路走,第一列也是。用动态规划思路,就是每一个终点位置路径都只能由上一个位置或者左一直位置到达(每次只能往右或者往下走一个位置),所以dp[i][j]=dp[i-1][j]+dp[i][j-1].
代码:
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> dp(m, vector<int>(n, 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];
}
};
本文介绍了一个经典的动态规划问题——计算从网格左上角到右下角的不同路径数量。通过分析得知,每一格的路径数量等于其上方格子与左侧格子路径数量之和。文章给出了C++实现代码。
4万+

被折叠的 条评论
为什么被折叠?



