ZOJ 1074 To the Max(DP)
2013-04-16 21:53
274 查看
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1074
这道题的dP是基于 “最大子段和” 的dp方法
例如求数组 1 2 -3 4;-5 6 -1 8 的最大子矩阵和,可以把两行相加得到数组-4 8 -4 12,对这个数组求最大子段和为8+-4+12=16,所以矩阵对应的最大子矩阵为2 -3 4; 6 -1 8
那么可以利用以上思想,对于m*n的矩阵A,选取他的第 i 行到第 j 行的数据组成子矩阵Aij (j-i+1行n列),Aij 对应的最大子段和可以如下求得:对每一列的值进行累加得到一个一维数组(1*n),对该数组求最大字段和( 其中 1=< i=<j<=m )。
综上所述,A的最大子矩阵和为:max( subMatrix(Aij) ) ,其中1=< i=<j<=m ,subSegment(Aij) 表示Aij 对应的最大子段和。
上代码:
【版权声明】转载请注明出处 /article/4879596.html
这道题的dP是基于 “最大子段和” 的dp方法
例如求数组 1 2 -3 4;-5 6 -1 8 的最大子矩阵和,可以把两行相加得到数组-4 8 -4 12,对这个数组求最大子段和为8+-4+12=16,所以矩阵对应的最大子矩阵为2 -3 4; 6 -1 8
那么可以利用以上思想,对于m*n的矩阵A,选取他的第 i 行到第 j 行的数据组成子矩阵Aij (j-i+1行n列),Aij 对应的最大子段和可以如下求得:对每一列的值进行累加得到一个一维数组(1*n),对该数组求最大字段和( 其中 1=< i=<j<=m )。
综上所述,A的最大子矩阵和为:max( subMatrix(Aij) ) ,其中1=< i=<j<=m ,subSegment(Aij) 表示Aij 对应的最大子段和。
上代码:
#include<iostream> #include <cstring> using namespace std; int maxSubSegment(int *arr,int n) { int max=-65535,sum=0; for(int i=1;i<=n;i++) { if(sum>0)sum+=arr[i]; else sum=arr[i]; if(max<sum)max=sum; } return max; } int matrix[101][101]; int sum[101]; int main() { int N; cin>>N; for(int i=1;i<=N;i++) for(int j=1;j<=N;j++) { cin>>matrix[i][j]; } //////////////////////////Dp; int result=-65535; for(int i=1;i<=N;i++) { memset(sum,0,sizeof(sum)); for(int j=i;j<=N;j++) { for(int k=1;k<=N;k++) sum[k]+=matrix[j][k]; int re=maxSubSegment(sum,N); if(result<re) result=re; } } cout<<result; return 0; }
【版权声明】转载请注明出处 /article/4879596.html
相关文章推荐
- HDOJ 1081 POJ 1050 ZOJ 1074 TO THE MAX【dp】
- ZOJ1074-To the Max(dp)
- DP--ZOJ - 1074 To the Max
- ZOJ 1074 To the Max【DP】【最大子段和】
- zoj 1074 || poj 1050 To the Max(简单DP)
- POJ 1050/ ZOJ 1074:To the Max - DP求子矩阵和
- ZOJ 1074 To the Max (DP)
- zoj1074 To the Max(简单的DP)
- ZOJ Problem Set - 1074 To the Max (最大和子矩阵 dp)
- ZOJ 1074 To the Max(DP 最大子矩阵和)
- zoj1074 To the Max
- TOJ 2010 ZOJ 1074 HDU1081 To The Max /最大子矩阵和
- To the Max(zoj 1074)最大子距阵和
- ZOJ 1074 To the Max
- To the Max(ZOJ 1074)
- ZOJ 1074 To the Max
- zoj 1074||poj 1050 To the Max
- PHP - zoj 1074 To the Max
- HDOJ 1081(ZOJ 1074) To The Max(动态规划)
- HDOJ 1081(ZOJ 1074) To The Max(动态规划)