最大子矩阵(最大子序列变形)
2017-04-03 13:34
169 查看
问题描述
给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大。
其中,A的子矩阵指在A中行和列均连续的一块。
输入格式
输入的第一行包含两个整数n, m,分别表示矩阵A的行数和列数。
接下来n行,每行m个整数,表示矩阵A。
输出格式
输出一行,包含一个整数,表示A中最大的子矩阵中的元素和。
样例输入
3 3
-1 -4 3
3 4 -1
-5 -2 8
样例输出
10
样例说明
取最后一列,和为10。
数据规模和约定
对于50%的数据,1<=n, m<=50;
对于100%的数据,1<=n, m<=500,A中每个元素的绝对值不超过5000。
最大子序列问题的变形。
用b[j]表示第j列的第r到第i行的元素值,r=1是初始行,然后用求最大子序列的方法枚举求出最大子阵。
将二维转化成一维的问题。
#include <bits/stdc++.h>
const int N=505;
const int INF=999999999;
using namespace std;
int main()
{
int n,m;
int a
,dp
,b
;
int ans=-INF;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
}
for(int r=1;r<=n;r++)
{
memset(b,0,sizeof(b));
for(int i=r;i<=n;i++)
{
for(int j=1;j<=m;j++) b[j]+=a[i][j];
int k=-INF;
for(int j=1;j<=m;j++)
{
k=max(0,k)+b[j];
ans=max(ans,k);
}
}
}
printf("%d\n",ans);
return 0;
}
给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大。
其中,A的子矩阵指在A中行和列均连续的一块。
输入格式
输入的第一行包含两个整数n, m,分别表示矩阵A的行数和列数。
接下来n行,每行m个整数,表示矩阵A。
输出格式
输出一行,包含一个整数,表示A中最大的子矩阵中的元素和。
样例输入
3 3
-1 -4 3
3 4 -1
-5 -2 8
样例输出
10
样例说明
取最后一列,和为10。
数据规模和约定
对于50%的数据,1<=n, m<=50;
对于100%的数据,1<=n, m<=500,A中每个元素的绝对值不超过5000。
最大子序列问题的变形。
用b[j]表示第j列的第r到第i行的元素值,r=1是初始行,然后用求最大子序列的方法枚举求出最大子阵。
将二维转化成一维的问题。
#include <bits/stdc++.h>
const int N=505;
const int INF=999999999;
using namespace std;
int main()
{
int n,m;
int a
,dp
,b
;
int ans=-INF;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
}
for(int r=1;r<=n;r++)
{
memset(b,0,sizeof(b));
for(int i=r;i<=n;i++)
{
for(int j=1;j<=m;j++) b[j]+=a[i][j];
int k=-INF;
for(int j=1;j<=m;j++)
{
k=max(0,k)+b[j];
ans=max(ans,k);
}
}
}
printf("%d\n",ans);
return 0;
}
相关文章推荐
- hdu1081 最大子矩阵和(DP动态规划 最大子序列和变形题)
- Maximum Sum 最大子矩阵和+dp+(最大连续子序列的变形)
- 【最大子矩阵和】HDU1559-最大子矩阵 + 网络赛北京 (变形)
- 东大OJ-最大子序列问题的变形
- hdu - To The Max-1081 - 最大子矩阵 - 最大连续子序列和变形/动态规划
- 算法题2 动态规划之最大子序列和&最大子矩阵和
- poj 2479 最大子序列和变形
- hrbust oj 2287 Bridge(最大上升子序列变形)
- hdu 1068 最大子序列和变形,,,
- LightOJ 1421 Wavio Sequence 最大上升子序列变形 双dp
- 最大子序列和最大子矩阵
- NYOJ - 814 - 又见拦截导弹(动态规划--最大单调递增子序列变形)
- 「最长单调序列变形」 最大前缀链
- 算法题2 动态规划之最大子序列和&amp;最大子矩阵和
- HDU 1069 最大子序列和(不连续)变形
- Take the Land - UVa 10074 变形最大子矩阵和
- ZOJ1074 最大和子矩阵 DP最大连续子序列
- 动态规划:ZOJ1074-最大和子矩阵 DP(最长子序列的升级版)
- 算法之最大连续子序列之和之变形题目
- 返回连续子序列,使得和最大(变形)