HDU 1024 Max Sum Plus Plus

来源:互联网 发布:linux 用代码链接网络 编辑:程序博客网 时间:2024/05/16 14:27

题意:将一个有n个数的数组分为m段,求这m段的最大和

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxm=1e6+10;int dp[maxm];int c[maxm];int a[maxm];int main(){    int m,n;    while(scanf("%d%d",&m,&n)!=EOF)    {        int i,j;        memset(c,0,sizeof(c));        memset(dp,0,sizeof(dp));        for(i=1;i<=n;i++)        {            scanf("%d",&a[i]);        }        int temp;        for(i=1;i<=m;i++)//C数组保存前i段最大值        {            temp=-(1<<29);            for(j=i;j<=n;j++)            {                dp[j]=max(dp[j-1],c[j-1])+a[j];                if(j>i)                {                    c[j-1]=temp;                }                temp=max(temp,dp[j]);            }        }        printf("%d\n",temp);    }    return 0;}


0 0
原创粉丝点击