杭電1024----Max Sum Plus Plus
阿新 • • 發佈:2017-05-06
int oid max art main 杭電 sca ava 最大
1 /* 2 這題還沒有理解透徹。某個dalao也不寫註釋。只能自己理解了。。。 3 先求為i個元素(1<=i<=M)為一個區間的最大和,保證元素個數大於等於i個,遞推到M個即可 4 借鑒原址:http://blog.csdn.net/java_wliang/article/details/14214303 5 歡迎討論 6 */ 7 #include<cstdio> 8 #define maxn 1000005 9 #define inf 1<<30 10 #define Max(a,b) (a)>(b)?(a):(b) 11 int d[maxn],m[maxn],a[maxn];12 void init(int n) 13 { 14 for(int i=0; i<n; ++i) 15 d[i] = m[i] = 0; 16 } 17 int main() 18 { 19 int n,M,ans; 20 while(~scanf("%d%d",&M,&n) && n+M) 21 { 22 init(n); 23 for(int i=1; i<=n; ++i) 24 scanf("%d",&a[i]); 25 for(int i=1; i<=M; ++i) 26 { 27 ans = -inf; 28 for(int j=i; j<=n; ++j) 29 { 30 d[j] = Max(d[j-1]+a[j],m[j-1]+a[j]); 31 m[j-1] = ans; 32 ans = Max(ans,d[j]); 33 } 34 } 35 printf("%d\n",ans); 36 } 37 return 0; 38 }
杭電1024----Max Sum Plus Plus