题目传送门:http://218.28.220.249:50015/JudgeOnline/problem.php?id=1266
1266: 最大子段和
时间限制: 1 秒 内存限制: 64 MB提交: 482 解决: 147
提交 状态
题目描述
一个大小为n的数组a1到an(−10^4≤ai≤10^4)。请你找出一个连续子段,使子段长度为奇数,且子段和最大。
输入
第一行为T(1≤T≤5),代表数据组数。
之后每组数据,第一行为n(1≤n≤10^5),代表数组长度。
之后一行n个数,代表a1到an。
输出
每组数据输出一行,表示满足要求的子段和最大值
样例输入
1 4 1 2 3 4
样例输出
9
思路太多,,有的时候也是种错
1 #include<stdio.h> 2 #include<string.h> 3 int a[110000]; 4 int main() 5 { 6 int t,i,n,p,max; 7 scanf("%d",&t); 8 while(t--) 9 { 10 scanf("%d",&n); 11 12 memset(a,0,sizeof(a)); 13 14 for(i=1;i<=n;i++) 15 scanf("%d",&a[i]); 16 max=a[1]; 17 p=a[1]; 18 for(i=2;i<n;i+=2) 19 { 20 p+=a[i]+a[i+1]; 21 if(p<a[i+1]) 22 p=a[i+1]; 23 if(max<p) 24 max=p; 25 } 26 p=a[2]; 27 for(i=3;i<n;i+=2) 28 { 29 p+=a[i]+a[i+1]; 30 if(p<a[i+1]) 31 p=a[i+1]; 32 if(max<p) 33 max=p; 34 } 35 printf("%d ",max); 36 } 37 return 0; 38 }