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 ...
随机推荐
- mapper动态代理
Dao接口的实现类仅仅是通过sqlsession的相关api定位到映射文件mapper中的相应id的sql语句,真正对DB进行操作的工作是由框架通过mapper中的sql完成的. mybatis框架抛 ...
- go标准库之fmt
go标准库之fmt fmt库 Print系列 1. Print 不换行 2. Println 换行 3. Printf 不换行,可以使用格式化占位符 格式化占位符 占位符 说明 通用 --- %v 值 ...
- Oracle 存储过程4:PL/SQL动态执行DDL语句
- useCallback与useMemo使用场景
疑问:为什么需要useCallback和useMemo 答: 父组件变化,会引起子组件的 re-render,为了阻止子组件不必要的 re-render,需要满足两个条件: 1.子组件用 react. ...
- java技术系列(三) 多线程之并行处理和同步
java同步器: 1,Semaphone: 信号量 2,CountDownLatch:倒计数门栓 3,CyclicBarrier 障栅 : 4,Exchanger :
- div css 页面中心弹窗窗口
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- stream-分组两次
Map<String, Map<String, List<AmazonBalanceCustom>>> amazonBalanceMap = amazonBalan ...
- el-dialog 嵌套子组件数据不刷新
<!-- 展示通道测量值 --> <el-dialog :title="analogTitle" :visible.sync="analogOp ...
- File、Files、Path、Paths
一.Path.Paths 和 File.Files // Paths 工具类,用于获取 Path 实例 Path path = Paths.get("files/Data.txt" ...
- 杭电oj 水仙花数
Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:"水仙花数"是指一个三位数,它的各位数字的立方和等于其本身 ...