POJ 1050 To the Max

今天写到这个题 突然想起之前写的那个题 是这个题的缩小版

题目就不黏贴了

这个是hdu1003 也就是本体缩小版链接http://blog.youkuaiyun.com/xishizuozuo/article/details/53869418

题解 这个题一开始我并没有觉得熟悉 后来才发现这就是hdu1003的升级版

那个题是枚举长度 这个题是在长度上面加了一个高 就变成了枚举长宽

先上代码 再解释

#include<stdio.h>
#include<string.h>
#define mini -99999999
int s1[300][300];
int dp[300];
int main()
{
int max,sum;
int n,a,b,i,j,m;
while(scanf("%d",&n)!=EOF)
{
max=mini;
memset(dp,0,sizeof(dp));
for(a=1;a<=n;a++)
for(b=1;b<=n;b++)
scanf("%d",&s1[a][b]);
for(a=1;a<=n;a++)  //这里是枚举高 限定从哪一行开始
{
memset(dp,0,sizeof(dp));//每一次枚举都是单独的 所以每一次都要归零
for(b=a;b<=n;b++)//这里就是在枚举底边
{
sum=0;
for(i=1;i<=n;i++)
{
dp[i]+=s1[b][i];//dp[i]存在i列
所有数字 等于就是在枚举右边  ,为什么不枚举左边请看我上面发的链接 
if(sum<=0)sum=dp[i];
else sum+=dp[i];
if(sum>max)max=sum;
}
}
}

printf("%d\n",max);
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值