【动态规划】HDU1559最大子矩阵
2017-09-06 16:17
190 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1559
/*
指定大小的最大子矩阵和
遍历每一个指定大小的矩阵
*/
#include<bits/stdc++.h>
using namespace std;
const int N=1050;
const int M=1050;
int dp
[M]={0}; // 从1,1到i,j的矩阵和
int main()
{
int t,n,m,x,y;
cin>>t;
while(t--){
cin>>n>>m>>x>>y;
memset(dp,0,sizeof(dp));
int Max=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>dp[i][j];
dp[i][j]+=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]; // 画图分析
if(i>=x&&j>=y)
Max=max(Max,dp[i][j]-dp[i-x][j]-dp[i][j-y]+dp[i-x][j-y]); // 每一个点都有对应的大小为x,y的矩阵
}
}
cout<<Max<<endl;
}
return 0;
}
/*
指定大小的最大子矩阵和
遍历每一个指定大小的矩阵
*/
#include<bits/stdc++.h>
using namespace std;
const int N=1050;
const int M=1050;
int dp
[M]={0}; // 从1,1到i,j的矩阵和
int main()
{
int t,n,m,x,y;
cin>>t;
while(t--){
cin>>n>>m>>x>>y;
memset(dp,0,sizeof(dp));
int Max=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>dp[i][j];
dp[i][j]+=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]; // 画图分析
if(i>=x&&j>=y)
Max=max(Max,dp[i][j]-dp[i-x][j]-dp[i][j-y]+dp[i-x][j-y]); // 每一个点都有对应的大小为x,y的矩阵
}
}
cout<<Max<<endl;
}
return 0;
}
相关文章推荐
- POJ 1050 求最大子矩阵和 动态规划
- 动态规划练习02:最大子矩阵
- 集训第五周动态规划 F题 最大子矩阵和
- POJ 1050 To the Max (动态规划——求最大子矩阵和)
- 动态规划_题目1139:最大子矩阵
- 最大子矩阵(动态规划)
- HDU 1505(动态规划-最大子矩阵)
- 【蓝桥杯-动态规划】求最大子段和+最大子矩阵和
- POJ 1050 求最大子矩阵和 动态规划
- 【POJ1050】To the Max (动态规划、最大字串和、最大子矩阵和)||NYOJ44 ||NYOJ104
- 动态规划——最大子矩阵和 收藏
- hdu1559(最大子矩阵)
- HDU1559 最大子矩阵 (二维树状数组)
- ACM-动态规划2-最大子矩阵
- 51nod 最大子矩阵和(动态规划)
- 笔试面试算法经典--动态规划-最大子矩阵和(Java)
- 动态规划练习-2(最大子矩阵)
- [动态规划]最大子序列+最大子矩阵
- 【BZOJ1084】最大子矩阵(动态规划)
- 动态规划-最大子矩阵和