Max Sum Plus Plus
阿新 • • 發佈:2018-05-14
大神 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 的最大值。 intmain() { 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