您的位置:首页 > 其它

最大连续和(hdu1003)

2013-09-06 10:32 246 查看
状态转移方程:d[i]=max(0,d[i-1])+a[i].

#include<iostream>
using namespace std;
int N[100005];
int main()
{
    int t,n,s;
    int i,k,sum,maxa;
    int flag1,flag2;
    cin>>t;
    for(k=1; k<=t; k++)
    {
        sum=0;
        maxa=-100000000;
        cin>>n;
        flag1=flag2=s=0;
        for(i=0; i<n; i++)
          {
                cin>>N[i];
                sum+=N[i];
                if(sum>maxa)
                {
                    maxa=sum;
                    s=flag2;
                    flag1=i;
                }
                if(sum<0)
                {
                    flag2=i+1;
                    sum=0;
                }
          }

          cout<<"Case "<<k<<":"<<endl<<maxa<<" "<<s+1<<" "<<flag1+1<<endl;
          if(k!=t)
            cout<<endl;
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: