鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)
最大矩阵和(Java、JavaScript、Python 和 C/C++)
算法实现
问题描述:
在一个二维矩阵中,找到一个子矩阵,使得该子矩阵的元素之和最大。
解决方案:
- 动态规划法:
- 定义
dp[i][j]
表示以左上角元素为 (1, 1),右下角元素为 (i, j) 的子矩阵的最大和。 - 初始化
dp[i][j]
为 0 或矩阵中元素的最小值。 - 递推计算
dp[i][j]
:dp[i][j] = max(dp[i-1][j], dp[i][j-1] + matrix[i][j])
dp[i][j] = max(dp[i][j], dp[i-1][j-1] + matrix[i][j])
- 找到
dp
矩阵中的最大值,该值就是最大子矩阵的和。
- 定义