简单dp 最大连续子序列

来源:互联网 发布:不同域名指向同一ip 编辑:程序博客网 时间:2024/05/29 17:37
//设n个元素的序列存储在数组A[1...n]中,求数组中连续子序列之和的最大值。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std ;const int maxn = 100005 ;int n , ans ;int a[maxn] ;int dp[maxn] ;//dp[i] 前i个数字的最大连续子序列的和//dp[i] = max(dp[i-1]+a[i],a[i]);int main(){   while(scanf("%d",&n)!=EOF)   {        memset(dp,0,sizeof(dp));        for(int i = 1 ; i <= n ; i++)        {            scanf("%d",&a[i]);        }        dp[1]=a[1];        ans = a[1];        for(int i = 2 ; i <= n ; i++)        {            dp[i] = max(dp[i-1]+a[i],a[i]);            if(dp[i]>ans)ans=dp[i];        }        printf("%d\n",ans);   }   return 0;}

0 0
原创粉丝点击