题目描述

已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。
比如,如下4 * 4的矩阵

0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
的最大子矩阵是
9 2
-4 1
-1 8
这个子矩阵的大小是15。

输入

输入是一个N * N的矩阵。输入的第一行给出N (0 < N <= 100)。
再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)。
已知矩阵中整数的范围都在[-127, 127]。

输出

测试数据可能有多组,对于每组测试数据,输出最大子矩阵的大小。

样例输入

1
27
3
-40 29 -16
38 18 22
24 -35 5

样例输出

27
78

子矩阵求和的打表法:用sum[ i ][ j ]记录第 j 列前 i 行的和。

这里把矩阵第 k 列的第 i 行与第 j 行之间的和称之为子段和,我们把每一列的子段和映射到一维数组,那么问题就变成了求“一个数组中的最大连续子段和”,可以用“求最大连续子序列”的思想

处理最大连续子段和主要是多了两重循环,这两重循环是为了选择矩阵中的两行,作为子段的开始行结束行

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include <string>
#include <queue>
#include <cstring>
#include <vector>
#include <set>
using namespace std;
typedef long long ll;
#define maxn 108
ll sum[maxn][maxn];
const int INF = 0x3fffffff;int main() {int n, num;while (cin >> n && n) {fill(sum[0], sum[0] + maxn*maxn, 0);for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {cin >> num;sum[i][j] = sum[i - 1][j] + num;}}ll MAX = -INF;for (int i = 0; i < n; i++) {for (int j = i + 1; j <= n; j++) {ll s = 0;//s记录以第k个段结尾时的最大连续子段和for (int k = 1; k <= n; k++) {s = max(s + sum[j][k] - sum[i][k], sum[j][k] - sum[i][k]);if (s > MAX)MAX = s;//MAX保存所有连续子段的最大和(即最大矩阵的值)}}}cout << MAX << endl;}
}

最大子矩阵(降维处理)相关推荐

  1. 【降维解法:最大字段和-最大子矩阵和-最终版最大子长方体和】【UVA10755】Garbage Heap...

    突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...

  2. 利用动态规划求连续数组最大和以及最大子矩阵的和

    题目一: 给定一个整型数组,数组中有正有负,求最大连续子序列的和. 解法: 利用动态规划的思想. 设f(n)表示以a[n]为子序列最后一个元素的最大和,则可以有下面的规则: (1)当f(n-1)< ...

  3. php求二维矩阵的最大子矩阵,最大子矩阵-动态规划

    最近看DP的题目比较多,感觉真是递归之后的又一大神器啊. 已知矩阵的大小定义为矩阵中所有元素的和. 给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的矩阵 ...

  4. 2018/8/9 MultiU 6 并查集+dfs,反向建边提高查询效率 !!! / 最大字段和n维(降维)/ 状压+中途相遇法...

    hdu6370 Werewolf http://acm.hdu.edu.cn/showproblem.php?pid=6370 题意:村民只能说真话,狼人"可以"撒谎,每个人说一句 ...

  5. 矩阵压缩降维动态规划递推【P1719 最大加权矩形】

    矩阵压缩&降维&动态规划&递推[P1719 最大加权矩形] 题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要 ...

  6. 用相似矩阵的几何意义直观理解PCA降维方法

    PCA(主成分分析)是降维中最经典的方法,其推导求解的常用两种方法包括最大方差理论(样本点到超平面的投影都尽可能分开)以及最小平方误差理论(样本点到超平面的距离都足够近),以上两种方法都需要进行严格意 ...

  7. 降维-基于RDD的API

    降维-基于RDD的API • Singular value decomposition (SVD) o Performance o SVD Example • Principal component ...

  8. 降维处理:PCA和LDA

    1,主成分分析 主成分分析(Principal Component Analysis,PCA)是一种无监督问题,是降维中最常用的一种手段,基于方差(方差最大的方向)提取最有价值的信息再进一步分类.降维 ...

  9. 机器学习(5)降维 -- 特征选择(低方差过滤与相关系数)与主成分分析(PCA降维)

    目录 一.基础理论 1.降维定义 2.降维对象及目标 二.低方差过滤 1.基础理论 2.API 过程: 1.读取待处理数据集 2.创建低方差过滤转换器(设置过滤阈值) 3.低方差过滤处理 代码 三.相 ...

最新文章

  1. 【转载】用 Pyinstaller 来打包 + 解决打包结果过大问题
  2. java-统计字符串中各字符次数
  3. 企业的无线安全问题综合解决方案
  4. springmvc + ajaxfileupload 实现异步上传文件(图片)
  5. ZZULIOJ 1123: 最佳校友
  6. 【JAVA SE】第七章 继承和多态
  7. Android__ListView控件的使用
  8. 什么是数据结构?对数据结构的理解
  9. java计算机毕业设计房产中介管理系统源码+系统+lw+数据库+调试运行
  10. 最小二乘法—多项式拟合非线性函数
  11. threejs生成由内而外光圈、城市掠过。
  12. spring boot+thymeleaf+bootstrap 简单实现后台管理系统界面
  13. 声卡驱动win7安装失败解决方法
  14. (十)苏世民:我的经验和教训:掌控(1~6)
  15. 模拟手机预览(非F12)
  16. [第六届蓝桥杯省赛C++B组]三羊献瑞
  17. dorado7中相关问题记录
  18. Django用admin开发的幼儿园薪资管理系统-3
  19. 经典算法—快速排序(Quicksort)使用详解
  20. 内蒙古科技大学计算机专业校企合作好不好,校企合作真的靠谱吗 校企合作好不好...

热门文章

  1. 小心!你的脸正在成为色情片主角……
  2. 春节囤货清单 | 15篇近期值得读的AI论文
  3. List 如何根据对象的属性去重?Java 8 轻松搞定!
  4. 技巧:MyBatis 中的trim标签,好用!
  5. 报名即将截止,中国移动“梧桐杯”大数据应用创新大赛,寻找大数据敢想者!...
  6. 1行代码消除PyTorch的CUDA内存溢出报错,这个GitHub项目刚发布就揽星600+
  7. 得了诺奖的彩色照相术失传100多年,现在终于被找回来了
  8. 清朝人如何变戏法?带你来看AI修复的1904年老电影(滑稽慎入)
  9. 27岁华裔小伙一战成名!搞出美国新冠最准预测模型
  10. 高考大数据:哪个省才是高考地狱模式?结论和想象不太一样