/*
NYoj 372 巧克力
也是一个球最大子矩阵问题,和NYoj 最大和一样.
和最大和不同的是时间要求跟高了,只要处理一下,
就可以避免不必要的操作.
*/
#include<stdio.h>
#include<string.h>
#define max(a,b) a>b?a:b
int main()
{
// freopen("input.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--)
{
int map[302][302];
int r,c;
memset(map,0,sizeof(map));
scanf("%d%d",&r,&c);
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
scanf("%d",&map[i][j]);
map[i][j]+=map[i-1][j];
}
int m=map[1][1];
for(int i=0;i<r;i++)
{
for(int j=i+1;j<=r;j++)
{
for(int Max=0,k=1;k<=c;k++)
{
int temp=map[j][k]-map[i][k];
Max=max(Max,0);//不要在宏定义后面随便加东西,宏定义是纯粹的照抄.
Max+=temp;
m=max(Max,m);
}
}
}
printf(" %d\n",m);
}
}
NYoj 372 巧克力[经典动态规划2]
最新推荐文章于 2020-03-01 23:33:55 发布