1. 程式人生 > >南陽理工--44 子串和

南陽理工--44 子串和

南陽 pan urn code amp logs 一個 sort 整數

描述給定一整型數列{a1,a2...,an},找出連續非空子串{ax,ax+1,...,ay},使得該子序列的和最大,其中,1<=x<=y<=n。

輸入
第一行是一個整數N(N<=10)表示測試數據的組數)
每組測試數據的第一行是一個整數n表示序列中共有n個整數,隨後的一行裏有n個整數I(-100=<I<=100),表示數列中的所有元素。(0<n<=1000000)
輸出
對於每組測試數據輸出和最大的連續子串的和。
樣例輸入
1
5
1 2 -1 3 -2
樣例輸出
5
提示
輸入數據很多,推薦使用scanf進行輸入
 1 #include<cstdio>
 2
#include<algorithm> 3 using namespace std; 4 int a[1000000+10]; 5 int main() 6 { 7 int t,n; 8 int maxx; 9 scanf("%d",&t); 10 while(t--) 11 { 12 maxx=0; 13 scanf("%d",&n); 14 for(int i=0;i<n;i++) 15 scanf("%d",&a[i]); 16 int
sum=0; 17 for(int i=0;i<n;i++) 18 { 19 sum+=a[i]; 20 if(sum<0) 21 { 22 sum=0; 23 } 24 maxx=max(maxx,sum); 25 26 } 27 if(maxx==0) //忽略了全負的情況 28 { 29 sort(a,a+n);
30 printf("%d\n",a[n-1]); 31 } 32 else 33 printf("%d\n",maxx); 34 } 35 return 0; 36 }

南陽理工--44 子串和