HDU1003 Max Sum[DP]

来源:互联网 发布:淘宝手机充值 编辑:程序博客网 时间:2024/05/19 17:05

4/1000

传送门
题目大意:求最大的一段区间和并输出起点和终点 如果有多个 输出第一个

很简单的区间dp…但是我还是PE了好久…令人无比绝望

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=1e5+10;int f[maxn],s[maxn],a[maxn];int main(){    int Case,n,Cases=0,ans=-200000000,ans_end;    scanf("%d",&Case);    while(Cases!=Case)    {        //ini        ans=-200000000;        if(Cases)printf("\n");        printf("Case %d:\n",++Cases);        scanf("%d",&n);        f[0]=-1;        for(int i = 1; i <= n;i++)        {            scanf("%d",&a[i]);            if(f[i-1]>=0)                f[i]=f[i-1]+a[i],s[i]=s[i-1];            else f[i]=a[i],s[i]=i;            if(ans<f[i]){ans=f[i],ans_end=i;}        }        printf("%d %d %d\n",ans,s[ans_end],ans_end);    }    return 0;}

以上。

原创粉丝点击