1. 程式人生 > >Max Sum Plus Plus

Max Sum Plus Plus

大神 name stream style i++ define () iostream tdi

DP題自己實在想不出來,看大神代碼才能勉強理解一下

   #include <iostream>  
    #include <cstdio>  
    #include <cstring>  
      
    using namespace std;  
      
    #define N 1000000  
    #define INF 0x7fffffff  
      
    int a[N+10];  
    int dp[N+10],Max[N+10];//max( dp[i-1][k] ) 就是上一組 0....j-1 的最大值。  
      
    int
main() { int n,m,mmax; while (~scanf("%d%d",&m,&n)) { for (int i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(dp,0,sizeof(dp)); memset(Max,0,sizeof(Max));
for (int i=1;i<=m;i++)//分成幾組 { mmax=-INF; for (int j=i;j<=n;j++)//j個數分成i組,至少要有i個數 { dp[j]=max(dp[j-1]+a[j],Max[j-1]+a[j]); Max[j-1]=mmax; mmax=max(mmax,dp[j]); } } printf (
"%d\n",mmax); } return 0; }

Max Sum Plus Plus