hdu 1003 Max Sum 最大连续子串和

来源:互联网 发布:制作生日快乐贺卡软件 编辑:程序博客网 时间:2024/06/10 06:06

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1003

第一次写文章,写个简单的dp

dp[i]代表以第i个数结尾的子串的最大和,则:

dp[i]=max(dp[i-1]+a[i],a[i]),即:

dp[i-1]>=0时取前者,否则取后者


还有hdu 1231类似


代码:

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int main(void){    int t;    int n,a,anss,ansf,ansr,s,f,r;    scanf("%d",&t);    for(int cas=1;cas<=t;cas++){        scanf("%d",&n);        scanf("%d",&a);        anss=s=a;        ansf=f=1;        ansr=r=1;        for(int i=1;i<n;i++){            scanf("%d",&a);            if(s>=0){                s+=a;                r=i+1;            }            else{                s=a;                f=i+1;                r=i+1;            }                        if(s>anss){                anss=s;                ansf=f;                ansr=r;            }        }        printf("Case %d:\n",cas);        printf("%d %d %d\n",anss,ansf,ansr);        if(cas!=t)    printf("\n");    }    return 0;}


原创粉丝点击