您的位置:首页 > 其它

hdu 1003 Max Sum (DP)

2012-10-15 13:07 281 查看
点击打开链接

题意:给你一串数,输出此列数中连续不间断的子数的最大和,以及其开始的位置,结束的位置

按下面的程序分析::

j暂时存储开始的位置,结束的位置用end存,其中,当sum<0时,则不满足和最大的条件,所以j的位置加一(即j=i+1),注意最后输出时,开始和结束的位置要加一,因为循环变量i是从0开始加的。。。

#include"stdio.h"
int main()
{
int sta,end,i,j,t,n,sum,max,m,count;
scanf("%d",&t);
count=0;
while(t--)
{
count++;
scanf("%d",&n);
sta=end=0;
max=-9999;
sum=0;j=0;
for(i=0;i<n;i++)
{
scanf("%d",&m);
sum+=m;
if(sum>max)
{
max=sum;
sta=j;
end=i;
}
if(sum<0)
{
sum=0;
j=i+1;
}
}
printf("Case %d:\n%d %d %d\n",count,max,sta+1,end+1);
if(t)
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: