《剑指Offer-47-礼物的最大价值》

从左上角到右下角,每次只能向右或者向下移动,问路径总值最大是多少?

今天刚好让我撞见是每日一题,刚好又一眼知道怎么做

	int maxValue(vector<vector<int>>& grid) {
		int m = grid.size(), n = grid[0].size();
		// 二维dp,dp[i][j]表示到达i行j列位置的最大价值
		vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));
		// 状态转移方程
		for (int i = 1; i <= m; ++i)
			for (int j = 1; j <= n; ++j)
				dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + grid[i - 1][j - 1];

		return dp[m][n];
	}

空间效率不太行,但是感觉又没有那么好优化

posted @ 2023-03-08 21:50  YaosGHC  阅读(19)  评论(0)    收藏  举报