【DP】最大子阵和

这道题目要求在包含正负数的二维数组中找到最大子矩阵的和。通过前缀和的思路,首先将矩阵上下相加,再左右相加,得到每个元素代表以它为右下角的子矩阵的和。初始的暴力解法因四重循环导致超时,优化后的解法仅使用两层循环,通过计算新矩阵的最大子段和来求解最大子矩阵和,显著提高了效率。
摘要由CSDN通过智能技术生成

最大子阵和

Description

有一个包含正数和负数的二维数组。一个子矩阵是指在该二维数组里,任意相邻的下标是1*1或更大的子数组。一个子矩阵的和是指该子矩阵中所有元素的和。本题中,把具有最大和的子矩阵称为最大子矩阵。

例如:

0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2

这个数组的最大子矩阵为:

9 2
-4 1
-1 8

其和为15。

Input

 

输入包含多组测试数据。每组输入的第一行是一个正整数N(1<=N<=100),表示二维方阵的大小。接下来N行每行输入N个整数,表示数组元素,范围为[-127,127]。

Output

 

输出最大子阵和。

Sample Input 1 

4
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2

Sample Output 1

15

题解

这道题可以说是非常有意思了,看起来这道题是非常简单的(当然实际上它也是简单的),思路非常清晰明了。如果你和我一样只是简单地认为它就这么简单的话,那么你现在的心情应当和我一样。

基本思路【PA】:(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值