64.最小路径和
发布日期:2021-05-14 23:49:23 浏览次数:25 分类:精选文章

本文共 2465 字,大约阅读时间需要 8 分钟。

���������������������������������������

������������

������������������ $m \times n$ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������

������������������������������������������������DP������������������������������������������������������������ dp��������� dp[i][j] ������������������������������������������ $(i,j)$ ���������������������

���������������
  • ������������

    • ������������ dp[0][0] ������������������������ grid[0][0]������������������������������������������
  • ���������������

    • ���������������������������������������������������������������������������������������������������������������������������$dp[0][j] = dp[0][j-1] + grid[0][j]$��������� $j$ ��� 1 ��� $n-1$���
    • ������������������������������������������������������������������������������������������������������������������������������$dp[i][0] = dp[i-1][0] + grid[i][0]$��������� $i$ ��� 1 ��� $m-1$���
  • ���������������������

    • ��������������������� $(i,j)$������ $i>0$ ��� $j>0$��������������������� $(i-1,j)$ ��������� $(i,j-1)$ ������������������$dp[i][j] = \min(dp[i-1][j], dp[i][j-1]) + grid[i][j]$���
  • ������������������������������ dp[m-1][n-1]������������������������������������

  • ������������������

    ���������������������������������������������������������������������������������������������������

    ������������

    ���������������������������������������������������������������������������������������������������������������������������������������������

    ������������

    #include 
    using namespace std;
    class Solution {
    public:
    int minPathSum(vector
    > grid) {
    int len1 = grid.size();
    int len2 = grid[0].size();
    vector
    > dp(len1, vector
    (len2, 0)); dp[0][0] = grid[0][0]; // ��������������������������� for (int i = 1; i < len1; ++i) { dp[i][0] = dp[i-1][0] + grid[i][0]; } for (int j = 1; j < len2; ++j) { dp[0][j] = dp[0][j-1] + grid[0][j]; } // ������������������ for (int i = 1; i < len1; ++i) { for (int j = 1; j < len2; ++j) { dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]; } } return dp[len1-1][len2-1]; } };

    ������

    ������������������������������������������������������������������������������������������������������������������������������������������������ $O(mn)$������������������������ $O(mn)$������������������������������������

    上一篇:查找——小易喜欢的单词
    下一篇:牛客假日团队赛47 I Times 17

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年04月23日 09时30分05秒