1. 程式人生 > >杭電1024----Max Sum Plus Plus

杭電1024----Max Sum Plus Plus

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