DP-最大子矩阵
1768:最大子矩阵
题目描述:
描述已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是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
参考:https://www.cnblogs.com/shadowland/p/5870382.html
枚举子矩阵时先确定最左侧一列和最右一列,即左右边界,然后把子矩阵每一行的值求和,压缩成一个一维数组,对这个数组求最大字段和。
i=1
i=2
源代码:
#include<iostream>
#include<cstring>
using namespace std; int main()
{
int a[105][105],dp[105]={0};
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
int ans=-1e10;
for(int i=1;i<=n;i++)
{
memset(dp,0,sizeof(dp));
for(int j=i;j<=n;j++)//从第i列开始的情况
{
int t=0;
for(int k=1;k<=n;k++)//相加第j行
{
dp[k]+=a[j][k]; if(t<=0)//累加值已变为负,要求最大值删去之前的累加值
{
t=dp[k];
}
else
{
t+=dp[k];
}
if(t>ans)
{
ans=t;
}
} } }
cout<<ans<<endl;
return 0;
}
DP-最大子矩阵的更多相关文章
- hihocoder 1580 dp最大子矩阵和
题意: 给出n*m的矩阵求最大子矩阵和,要求必须把矩阵中的某一个元素替换成p 代码: //求最大子矩阵和,容易想到压缩之后dp但是这道题要求必须替换一次p,必然优先替换最小的. //这样如果求得的结果 ...
- dp - 最大子矩阵和 - HDU 1081 To The Max
To The Max Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=1081 Mean: 求N*N数字矩阵的最大子矩阵和. ana ...
- ZOJ 1074 To the Max(DP 最大子矩阵和)
To the Max Time Limit: 2 Seconds Memory Limit: 65536 KB Problem Given a two-dimensional array o ...
- hdu---1506(Largest Rectangle in a Histogram/dp最大子矩阵)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- NOIP2014pj子矩阵[搜索|DP]
题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行和第2.4.5列交叉位置的元素 ...
- openjudge1768 最大子矩阵[二维前缀和or递推|DP]
总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的 ...
- 51nod 1051 最大子矩阵和(dp)
题目链接:51nod 1051 最大子矩阵和 实质是把最大子段和扩展到二维.读题注意m,n... #include<cstdio> #include<cstring> #inc ...
- BZOJ 1084: [SCOI2005]最大子矩阵 DP
1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...
- ZOJ1074 (最大和子矩阵 DP)
F - 最大子矩阵和 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Descri ...
- [ZJOI2007]棋盘制作 悬线法dp 求限制下的最大子矩阵
https://www.luogu.org/problemnew/show/P1169 第一次听说到这种dp的名称叫做悬线法,听起来好厉害 题意是求一个矩阵内的最大01交错子矩阵,开始想的是dp[20 ...
随机推荐
- Java反射解析注解
package com.jeeplus.config; import javax.validation.constraints.Size; import java.lang.annotation.An ...
- 【NPDP专项练习】第七章 产品生命周期管理
第七章 产品生命周期管理 1.以下哪一项是产品生命周期缩短的原因之一? A 技术停滞不前 B 减少竞争 C 顾客要求更高 D 沟通障碍正在增加 答案:C 解析 A技术持续进步:B竞争加剧:D沟通增加 ...
- SecureCRT保存日志
1.打开Options->Session Options...,选择LogFile 2.Log file name格式 %H_%S_%Y%M%D-%h%m%s.log 参数说明: %H---主机 ...
- mysql 修改字符集相关操作
修改某个表字段的字符集 ALTER TABLE apply_info MODIFY member_name varchar(128) CHARACTER SET utf8mb4; 查看某个库的字符集类 ...
- select remove option safari 兼容
select 移除某一 option 的 javascript 公司用的代码是 var ddlPrimaryResource = document.getElementById(ddlPrimaryR ...
- C# snaps
C# 启用 禁用 本地连接 1 static void Enable(string interfaceName) 2 { 3 System.Diagnostics.ProcessStartInfo p ...
- 【C++复习】第九章 模板与群体数据(1)
1.例:求绝对值函数的模板 函数重载方便了函数的使用者,开发者还是要写两个函数 模板是用来生成函数的东西 编译器通过推导生成函数: 2.函数模板定义语法 从例题入手,别上来就扣语法 3.例9-1 函数 ...
- winform 登录后跳转百度地图报错 使用委托解决
最近用winform做一个登录后跳转到百度地图的小程序,使用了线程,winform的UI是单线程操作的,由于百度地图写在另外一个窗体,导致报错.后来使用了委托解决了这个小问题. delegate vo ...
- conda出现Solving environment: failed错误
conda在使用create新建环境和install安装时报错"Solving environment: failed" 报错截图 解决方案 1.在cmd中输入 %HOMEPAT ...
- 无法加载文件 D:\lunwen\nodejs\node_global\vue.ps1,因为在此系统上禁止运行脚本。visual code页面vue ui启动失败
报如下错误 解决方法: 1.以管理员身份运行 Windows PowerShell(管理员)点击win键 搜索powershell 点击以管理员身份运行 如下图所示 2.输入 set-Executio ...