HDU 1081 To The Max
2012-10-22 01:23
246 查看
/* 这题暴力的话时间复杂度太高。 本题是一维最大连续子序列的拓展。 求二维的话只要转化为一维就可以了。 转化方式。将一列的数字通过n^2的时间复杂度归并成一个数, 每次归并一次就遍历一下list求最大值(这步就是执行一维的最大连续子序列)。 */ #include <iostream> #include <string.h> #include <cmath> using namespace std; int list[150]; int gird[150][150]; void get(int a,int b,int n) //获得list列表。 { int i,j; memset(list,0,sizeof(list)); for(j=1;j<=n;++j) { for(i=a;i<=b;++i) { list[j]+=gird[i][j]; } } return; } int find(int n) { int i,j,k; int res=0; for(i=0;i<n;++i) { for(j=0;j<=i;++j) { get(j,i,n); //已经获得list列表,现在进行一维的最大连续子序列。 for(k=1;k<=n;++k) { list[k]=max(list[k-1],0)+list[k]; if(list[k]>res) res=list[k]; } } } return res; } int main() { int n,i,j; while(cin>>n) { for(i=0;i<n;++i) for(j=1;j<=n;++j) { cin>>gird[i][j]; } cout<<find(n)<<endl; } return 0; }
相关文章推荐
- HDU 1081 To The Max【DP】【最大子段矩阵求和】
- HDU 1081 To The Max
- Hdu 1081 To The Max -- DP
- HDU 1081 To The Max(DP)
- HDU 1081 To The Max
- HDU 1081 To The Max(动态规划)
- hdu 1081 To The Max
- HDU-1081-To The Max(二维最大子段和)
- POJ 1050 && HDU 1081 To the Max(前缀和)
- HDU 1081 To The Max 最大子矩阵和 .
- hdu 1081【To The Max】
- hdu 1081 & poj 1050 To The Max(最大和的子矩阵)
- poj 1050 || hdu 1081 To The Max
- HDU 1081 To The Max
- hdu 1081 to the max
- dp - 最大子矩阵和 - HDU 1081 To The Max
- hdu 1081 To The Max
- HDU1081 To The Max
- hdu 1081 To The Max(最大子矩阵和,dp)
- HDU 1081 To The Max