博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ1050To the Max(求最大子矩阵)
阅读量:5270 次
发布时间:2019-06-14

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

题意:给出N*N的矩阵,求一个子矩阵使得子矩阵中元素和最大

分析:

必备知识:求一组数的最大连续和

1    int a[N]; 2    int sum = 0,maxn = -INF; 3    for(int i = 1; i <= n; i++) 4    { 5         if(sum + a[i] > a[i]) 6             sum += a[i]; 7         else 8             sum = a[i]; 9         maxn = max(sum, maxn);10    }
一维数组最大连续和

假设要求的子矩阵位于 r 行到 i 行,c 列到 j 列之间怎么找出这个值呢?

方法:可以讲矩阵从 r 行 到 i 行 之间按照列求和放到一个数组中,colsum[y] 表示 y 列所有元素的和,所以对这个colsum[] 来求最大连续和 就得出解来

但是不知道 最大子矩阵 是位于那两个行之间, 需要两重循环枚举r 行 到 i 行

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 const int Max = 210; 7 const int INF = 0x3f3f3f3f; 8 int matrix[Max][Max]; 9 int colsum[Max],n,maxn;10 int maxcolsum()11 {12 int ans = 0, colmax = -INF;13 for(int i = 1; i <= n; i++)14 {15 if(colsum[i] + ans > colsum[i])16 ans += colsum[i];17 else18 ans = colsum[i];19 if(colmax < ans)20 colmax = ans;21 }22 return colmax;23 }24 int maxMatrix()25 {26 for(int i = 1; i <= n; i++)27 {28 memset(colsum, 0, sizeof(colsum));29 for(int j = i; j <= n; j++)30 {31 for(int k = 1; k <= n; k++)32 colsum[k] += matrix[j][k]; //求 从 i 行到 j 行所有的列元素的和33 int ans = maxcolsum(); // 对列元素和 求 最大连续和 34 if(maxn < ans)35 maxn = ans;36 }37 }38 return maxn;39 }40 int main()41 {42 43 while (scanf("%d", &n) != EOF)44 {45 for(int i = 1; i <= n; i++)46 for(int j = 1; j <= n; j++)47 scanf("%d", &matrix[i][j]);48 maxn = -INF;49 printf("%d\n",maxMatrix());50 }51 return 0;52 }
View Code

 

转载于:https://www.cnblogs.com/zhaopAC/p/5251128.html

你可能感兴趣的文章
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>
mysql 主从库同步
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
ABP入门系列(6)——定义导航菜单
查看>>
排序sort (一)
查看>>
Parrot虚拟机
查看>>
4.6上午
查看>>
linux之sort用法
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Redis-jedis模拟多线程购票
查看>>
聊一聊 Flex 中的 flex-grow、flex-shrink、flex-basis
查看>>
Gcc 安装过程中部分配置
查看>>
Logparser介绍
查看>>
Js实现客户端表单的验证
查看>>
python使用input()来接受字符串时一直报错“xxx is not defined”
查看>>
2016.7.15 落实字符及字符串读取的结果
查看>>