博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ1074 最大子矩阵的和
阅读量:5247 次
发布时间:2019-06-14

本文共 994 字,大约阅读时间需要 3 分钟。

题目意思很简单了,输入一个行数和列数相同的矩阵a[n][n]然后求最大的子矩阵和。它实际上就是最大子段和的二维推广,

可以按照一维的思路来做。首先将每一列的和压缩成一个b[j]数组的元素,它代表a[i1][j]+a[i1+1][j]+......+a[i2][j]的和,

这是保持列数不变再把它压缩成一个元素,这样进行压缩后实际上就是求b[1].....b[j]..b[n]的最大子段和,这就转化为一维的情况。

View Code
1 #include
2 #include
3 4 #define N 101 5 int a[N][N]; 6 int b[N]; 7 8 int MaxSum(int n)//求一维情况下的最大子段和为 9 {
10 int a = 0,sum = 0,i; 11 for(i=0; i
0) 14 a += b[i]; 15 else 16 a = b[i]; 17 if( a > sum ) 18 sum = a; 19 } 20 return sum; 21 } 22 23 int MaxSum2(int n)//将二维的压缩成一维 24 {
25 int sum=0,i,j,k,max; 26 for(i=0; i
sum) 38 sum = max; 39 } 40 } 41 return sum; 42 } 43 44 int main() 45 {
46 int i, ncases, j,num; 47 48 scanf("%d",&ncases); 49 for(i=0; i

转载于:https://www.cnblogs.com/cn19901203/archive/2012/03/28/2421545.html

你可能感兴趣的文章
TLA+(待续...)
查看>>
题解: [GXOI/GZOI2019]与或和
查看>>
MacOS copy图标shell脚本
查看>>
国外常见互联网盈利创新模式
查看>>
Oracle-05
查看>>
linux grep 搜索查找
查看>>
Not enough free disk space on disk '/boot'(转载)
查看>>
android 签名
查看>>
vue项目中使用百度统计
查看>>
android:scaleType属性
查看>>
SuperEPC
查看>>
mysql-5.7 innodb 的并行任务调度详解
查看>>
shell脚本
查看>>
Upload Image to .NET Core 2.1 API
查看>>
Js时间处理
查看>>
Java项目xml相关配置
查看>>
三维变换概述
查看>>
第三次作业
查看>>
vue route 跳转
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>