题目描述
给定一个二维整数矩阵,要在这个矩阵中选出一个子矩阵,使得这个子矩阵内所有的数字和尽量大,我们把这个子矩阵称为和最大子矩阵,子矩阵的选取原则是原矩阵中一块相互连续的矩形区域。
输入描述
输入的第一行包含2个整数n, m(1 <= n, m <= 10),表示一个n行m列的矩阵,下面有n行,每行有m个整数,同一行中,每2个数字之间有1个空格,最后一个数字后面没有空格,所有的数字的在[-1000, 1000]之间。
输出描述
输出一行一个数字,表示选出的和最大子矩阵内所有的数字和。
用例
输入
3 4
-3 5 -1 5
2 4 -2 4
-1 3 -1 3
输出 20
说明 一个3*4的矩阵中,后面3列的子矩阵求和加起来等于20,和最大。
解题思路:
- 首先,我们需要计算矩阵的前缀和,这样我们可以在O(1)的时间内得到任意子矩阵的和。
- 然后,我们遍历所有可能的子矩阵,计算它们的和,并更新最大和。