广州C++信奥老师解一本通题 1260:1282:最大子矩阵

 【题目描述】

已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是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]。

【输出】

输出最大子矩阵的大小。

【输入样例】

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

【输出样例】

15

 

#include <bits/stdc++.h>
using namespace std;
int b[110][110]; //存储第b[i][j]为 第i行前含自己的元素累加行
//b[2][j]-b[1][j] 即为原来a[2][i]的元素 b[3][j]-b[1][j] 即为2行到第3行的累加和 
int dp[110],ans=-0x3f3f3f3f,n;  //asn有负数,要设置为很小的负数  dp数组记录每列最大子段和 
int main()
{cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){cin>>b[i][j];b[i][j]+=b[i-1][j];}for(int i=1;i<=n;i++) for(int j=i;j<=n;j++){memset(dp,0,sizeof(dp));  for(int k=1;k<=n;k++){dp[k]=max( b[j][k]-b[i-1][k], dp[k-1]+ b[j][k]-b[i-1][k] );  //要i-1行。例如 i=1,j=1时 ans=max(ans,dp[k]);}}cout<<ans;return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/803916.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

煤矿AI智能视频分析识别系统

煤矿AI智能视频分析识别系统是在现场已有监控系统的基础上,煤矿AI智能视频分析识别系统通过计算机视觉技术对现场人员行为以及物体状态进行实时分析检测。煤矿AI智能视频分析识别系统对皮带跑偏、撕裂、堆煤、异物、非法运人、有煤无煤状态等异常情况,以及人员工服穿戴、反光…

shell脚本之删除固定天数之前的文件

shell脚本之删除固定天数之前的文件 需求:删除30天之前的文件该需求一般用于自动清理程序日志,程序日志按每天分割之类的场景。#!/bin/bash #文件目录 addr=/apps/logs #需要删除的文件名称 file_name="*.log" #天数 days=30#查询并删除文件 find $addr -type f -m…

如何解决 :libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found

如何解决 :libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found 问题描述: 当您尝试在Linux系统上运行某个程序或软件时,有时会遇到一个错误,提示libstdc++.so.6: version GLIBCXX_3.4.30 not found。这个错误表明您的系统缺少某个特定版本的C++标准库,具体来说就是GLIBC…

MAGICORE:基于多代理迭代的粗到细精炼框架,提升大语言模型推理质量

大语言模型(LLM)的推理能力可以通过测试时聚合策略来改进,即为每个问题生成多个样本并对它们进行聚合以找到更好的答案。这些方法往往会达到饱和点,超过这个点后额外的样本不会带来更多收益。精炼(refinement)提供了另一种选择,它使用模型生成的反馈不仅采样更多解决方案,还提高…

JVM工具-jstat

jstat(JVM Statistics Monitoring Tool):查看 JVM 的统计信息 jstat -gc 1输出字段:S0C、S1C:Survivor 0 和 Survivor 1 区域的当前容量(KB)S0U、S1U:Survivor 0 和 Survivor 1 区域的已使用空间(KB)EC:Eden 区域的当前容量(KB)EU:Eden 区域的已使用空间(KB)OC:Old 区…

如何基于云产品搭建一个高可用性的网站

如何基于云产品搭建一个高可用性的网站? 从传统机房服务器迁移至云计算平台,无论是可用性的提高,还是维护成本的降低,都是云计算带来的不可否认的优势。本案示例通过使用天翼云常用的三个云产品 ECS+ELB+RDS 来帮助用户快速地在云端搭 建具备高可用性的网站 wordpress。本文…

云灾备:云时代的数据安全

灾备(DR),在信息化的IT系统中,指的是容灾与备份结合,利用IT技术对企业数据、业务高可用进行保护,确保系统遭受灾难时数据安全、业务快速恢复。其作为“网络安全的最后一公里”,是网络安全保障体系的重要组成部分,也是网络与系统基础设施持续有效运行的基本保障。本文分…

MySQL8物理一键备份和恢复脚本分享

MySQL8物理一键备份和恢复脚本分享 原创 我科绝伦 小周的数据库进阶之路2024年09月23日 00:01 重庆热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者频率比较的内容,希望大家…

JVM工具-基础

Jvm内存 1.堆内存(Heap): 堆内存是Java中用于存放对象实例的内存区域,几乎所有的对象实例(包括数组)都在这里分配内存。 堆内存由垃圾回收器(Garbage Collector,GC)自动管理,程序员不需要手动释放。 堆内存可以细分为年轻代(Young Generation)、老年代(Old Genera…

学生订阅如何免费获得2台Azure ArchLinux虚拟机

微软Azure 的学生订阅可以免费开 Windows 和 Linux 虚拟机各一台,但是只有1G内存,在Windows Server里面跑不动程序。 下面记录了我将安装了Ubuntu和Windows Server的2台虚拟机都重装成ArchLinux的过程。 一、登录github学生账号,登入https://portal.azure.com/ 分别开通两台…

教你玩转MySQL8物理备份利器Xtrabackup

教你玩转MySQL8物理备份利器Xtrabackup 原创 我科绝伦 小周的数据库进阶之路2024年09月22日 00:00 重庆热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者频率比较的内容,希望…

双面打印机:激光打印、复印、扫描一体机LaserJet Pro MFP 4104dw

双面打印机: 型号:LaserJet Pro MFP 4104dw 功能:激光打印、复印、扫描一体机