最大字段和 51nod 1049 水水水水水水水水水水水水
阿新 • • 發佈:2017-09-09
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 -2Output示例
20
水題 ,不懂問我,只限女生。
1 #include <iostream> 2View Codeusing 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 }
最大字段和 51nod 1049 水水水水水水水水水水水水