1. 程式人生 > >最大字段和 51nod 1049 水水水水水水水水水水水水

最大字段和 51nod 1049 水水水水水水水水水水水水

set ret sed cin log gif stack space 負數

N個整數組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的連續子段和的最大值。當所給的整數均為負數時和為0。 例如:-2,11,-4,13,-5,-2,和最大的子段為:11,-4,13。和為20。 Input
第1行:整數序列的長度N(2 <= N <= 50000)
第2 - N + 1行:N個整數(-10^9 <= A[i] <= 10^9)
Output
輸出最大子段和。
Input示例
6
-2
11
-4
13
-5
-2
Output示例
20

水題 ,不懂問我,只限女生。
技術分享
 1 #include <iostream>
 2
using namespace std; 3 #include<string.h> 4 #include<set> 5 #include<stdio.h> 6 #include<math.h> 7 #include<queue> 8 #include<map> 9 #include<algorithm> 10 #include<cstdio> 11 #include<cmath> 12 #include<cstring> 13 #include <cstdio> 14
#include <cstdlib> 15 #include<stack> 16 #include<vector> 17 int a[51000]; 18 int main() 19 { 20 int n; 21 cin>>n; 22 for(int i=0;i<n;i++) 23 scanf("%d",&a[i]); 24 long long sum=0; 25 long long max1=0; 26 for(int i=0;i<n;i++) 27 { 28 sum+=a[i];
29 if(sum<0) 30 sum=0; 31 max1=max(sum,max1); 32 } 33 cout<<max1<<endl; 34 return 0; 35 }
View Code

最大字段和 51nod 1049 水水水水水水水水水水水水