1. 程式人生 > >最大子序列和(動態規劃)

最大子序列和(動態規劃)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int a[100010];
int dp[100010];
int max(int x,int y){return x>y?x:y;}
int main()
{
 int k;
 int i;
 scanf("%d",&k);
 for(i=0;i<k;i++)
 {
  scanf("%d",&a[i]);
 }
 memset(dp,0,sizeof(dp));//初始化dp
 dp[0]=a[0];
 for(i=1;i<k;i++)
 {
  dp[i]=max(0,dp[i-1])+a[i];
 }
 int ans=dp[0];
 for(i=0;i<k;i++)
 {
  if(ans<dp[i]){ans=dp[i];}
 }
 printf("%d\n",ans);
 return 0;
}