模板:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; #define MAX(a,b) (a>b)?a:b const int SIZE=1000000+16; const int INF=0x30303030; int a[SIZE]; int dp[SIZE]; int rec[SIZE]; int main() { int n,m; while(scanf("%d %d",&m,&n)!=EOF) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); rec[i]=dp[i]=0; } dp[0]=0; rec[0]=0; int ans; for(int i=1;i<=m;i++) { ans=-INF; for(int j=i;j<=n;j++) { dp[j]=MAX(dp[j-1]+a[j],rec[j-1]+a[j]); rec[j-1]=ans; ans=MAX(ans,dp[j]); } } printf("%d\n",ans); } return 0; }
原文:http://www.cnblogs.com/program-ccc/p/4692957.html