您的位置:首页 > 其它

hdu 1003 Max Sum【DP】 0MS 248K

2012-01-25 13:15 447 查看
//dp[i] = max(dp[i-1]+a[i],dp[i]) = a[i]+dp[i-1]<0?0:dp[i-1];
//max=a[i]+max<0?0:max;
#include<iostream>
using namespace std;
inline void read(int &d)
{
char ch;
int flag=1;
while(ch=getchar(),ch==' '||ch=='\n');
ch=='-'?flag=-1,d=0:d=ch-'0';
while(ch=getchar(),ch>='0'&&ch<='9')    d=d*10+ch-'0';
d*=flag;
}
int main()
{
int a,t,n,cases=1;
read(t);
while(t--)
{
read(n);
int sum=0,ans=-2000,tmp=1,head,rear;
for(int i=1;i<=n;i++)
{
read(a);
sum+=a;
if(sum>ans) head=tmp,rear=i,ans=sum;
if(sum<0)   sum=0,tmp=i+1;
}
//cout<<"Case "<<cases++<<":"<<endl;
//cout<<ans<<' '<<head<<' '<<rear<<endl;
printf("Case %d:\n%d %d %d\n",cases++,ans,head,rear);
if(t)putchar('\n');
//if(t)cout<<endl;
}
return 0;
}


[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: