hdu 1024 Max Sum Plus Plus (最大m子段和)

来源:互联网 发布:腾讯软件管家升级win10 编辑:程序博客网 时间:2024/05/16 11:15
#include<string.h>#include<stdio.h>#include<iostream>using namespace std;const long long mod=1e9+7;const int MAXN = 1000005;int max(int a ,int b){    return a > b ? a : b;}int n;int num[1000005];int dp[2][MAXN];int rev;int temp;int ans;int m;int main(){    while(~scanf("%d" , &m)){        ans = -0x3f3f3f3f;        scanf("%d" , &n);        rev = 1;        for(int i = 1 ; i <= n ; i ++){            scanf("%d" , &num[i]);        }        memset(dp[0],0,sizeof(dp[0]));        memset(dp[1],0,sizeof(dp[1]));        for(int i = 1 ; i <= m ; i ++){            ans = -0x3f3f3f3f;            for(int j = i; j <= n ; j ++){                dp[1][j] = max(dp[1][j - 1] , dp[0][j - 1]) + num[j];                dp[0][j - 1] = ans;                if(ans < dp[1][j]) ans = dp[1][j];            }        }        printf("%d\n" , ans);    }   return 0;}


原创粉丝点击