hdu 1003 Max Sum

来源:互联网 发布:windows安装程序 编辑:程序博客网 时间:2024/06/05 09:10

这就是一个很简单的DP思想,状态转移方程为f[i]=max(f[i-1]+a[i],a[i])。

#include<stdio.h>#include<string.h>int main(){    int num[100010],s;    int n,m,i,max,a,end,begin,t;    scanf("%d",&n);    for(t=1;t<=n;t++)    {        scanf("%d",&m);        memset(num,0,sizeof(num));        for(i=0;i<m;i++)        scanf("%d",&num[i]);        s=max=num[0];        begin=a=end=0;        for(i=1;i<m;i++)        {        if(s+num[i]<num[i]) {s=num[i];a=i;}//状态转移方程        else s+=num[i];        if(s>max) {max=s;begin=a;end=i;}        }//核心代码        printf("Case %d:\n",t);        printf("%d %d %d\n",max,begin+1,end+1);        if(t<n) printf("\n");    }    return 0;}与南阳 44 字串和相同


0 0
原创粉丝点击