【剑指offer】【动态规划】47. 礼物的最大价值

题目链接: https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof/

动态规划

状态表示: f[i][j]表示从左上角走到[i,j]处拿到的礼物的最大价值;
状态计算: f[i][j] = max(f[i - 1][j], f[i][j - 1]) + grid[i - 1][j - 1]; (f[i][j]坐标从1,1开始)
初始化: f[1,1] = gird[0][0]
时间复杂度:O(n^2)
空间复杂度:O(n*m)

public:
    int maxValue(vector<vector<int>>& grid) {
        int m = grid.size(), n = grid[0].size();

        vector<vector<int>> f(m + 1, vector<int>(n + 1, 0));
   
        for(int i = 1; i < m + 1; ++i)
            for(int j = 1; j < n + 1; ++j)
                 f[i][j] = max(f[i - 1][j], f[i][j - 1]) + grid[i - 1][j - 1];

        return f[m][n];
    }
};
posted @ 2020-06-08 16:53  NaughtyCoder  阅读(204)  评论(0)    收藏  举报