动态规划 - 最大子矩阵和
2011-10-10 22:00
148 查看
#include <iostream>
using namespace std;
//求最大连续子矩阵和,动态规划,O(n^3) of time:
/*
输入
4
1 -4 3 -8
-3 5 2 -3
2 -1 8 1
-1 1 -2 -4
输出
14
*/
int max_sum(int n, int *arr)
{ //求单个序列的最大连续子串和
int result=0;
int b=0;
for(int i=0;i<n;i++)
{
if(b>0) b+=arr[i];
else b=arr[i];
if(b>result) result=b;
}
return result;
}
int max_sum2(int m, int n, int **arr)
{
int result=0;
int *b=new int
;
for(int i=0;i<m;i++)
{
memset(b,0,sizeof(int)*n);
for(int j=i;j<m;j++)
{
for(int k=0;k<n;k++)
b[k]+=arr[j][k];//b[k]=arr[i][k]+arr[i+1][k]+...+arr[j][k]
int max=max_sum(n,b);
if(max>result) result=max;
}
}
delete b;
return result;
}
int main()
{
int N;
cin>>N;
int i,j;
int **arr=new int*
;
for(i=0;i<N;i++)
{
arr[i]=new int
;
for(j=0;j<N;j++)
cin>>arr[i][j];
}
cout<<max_sum2(N,N,arr)<<endl;
for(i=0;i<N;i++)
delete arr[i];
delete arr;
return 0;
}
using namespace std;
//求最大连续子矩阵和,动态规划,O(n^3) of time:
/*
输入
4
1 -4 3 -8
-3 5 2 -3
2 -1 8 1
-1 1 -2 -4
输出
14
*/
int max_sum(int n, int *arr)
{ //求单个序列的最大连续子串和
int result=0;
int b=0;
for(int i=0;i<n;i++)
{
if(b>0) b+=arr[i];
else b=arr[i];
if(b>result) result=b;
}
return result;
}
int max_sum2(int m, int n, int **arr)
{
int result=0;
int *b=new int
;
for(int i=0;i<m;i++)
{
memset(b,0,sizeof(int)*n);
for(int j=i;j<m;j++)
{
for(int k=0;k<n;k++)
b[k]+=arr[j][k];//b[k]=arr[i][k]+arr[i+1][k]+...+arr[j][k]
int max=max_sum(n,b);
if(max>result) result=max;
}
}
delete b;
return result;
}
int main()
{
int N;
cin>>N;
int i,j;
int **arr=new int*
;
for(i=0;i<N;i++)
{
arr[i]=new int
;
for(j=0;j<N;j++)
cin>>arr[i][j];
}
cout<<max_sum2(N,N,arr)<<endl;
for(i=0;i<N;i++)
delete arr[i];
delete arr;
return 0;
}
相关文章推荐
- 动态规划---最大子段和&最大子矩阵和
- 动态规划求最大子矩阵详解(hdu 1505,1506 , 2870)
- 动态规划:最大子矩阵
- 动态规划[入门]1- 最大子矩阵和
- 动态规划——最大子矩阵和
- 动态规划——最大子矩阵(hdu1081)
- 利用动态规划求连续数组最大和以及最大子矩阵的和
- 动态规划--最大子矩阵和
- 利用动态规划求连续数组最大和以及最大子矩阵的和
- 动态规划:ZOJ1074-最大和子矩阵 DP(最长子序列的升级版)
- 动态规划: 最大子矩阵 (降维打击)
- 动态规划——最大子矩阵和
- 动态规划-最大子矩阵和(ZOJ 1074 TO THE MAX )
- 动态规划 最大子矩阵
- 动态规划-最大子矩阵
- 100道动态规划——21 HDU 1559 最大子矩阵和 树状数组 最大连续子区间和
- 最大子矩阵问题(动态规划的推广)
- hdu1081 最大子矩阵和(DP动态规划 最大子序列和变形题)
- 动态规划之求最大子矩阵问题
- 动态规划----最大子矩阵