NYOJ44子串和
子串和
时间限制:5000 ms | 内存限制:65535 KB
难度:3
- 描述
- 给定一整型数列{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
View Code1 2 #include<stdio.h> 3 int a[1000001];//防止函数内部数组过大,出现错误 4 int main() 5 { 6 int i,n,sum,num; 7 scanf("%d",&n); 8 while(n--) 9 { 10 sum=-100; 11 scanf("%d",&num); 12 for(i=1;i<=num;i++)//漏掉了“=“号,很是悲剧。 13 { 14 scanf("%d",&a[i]); 15 if(a[i-1]>0) 16 a[i]+=a[i-1];//进行比较,如果之前的数据和大于0累加,否则重新开始。 17 if(a[i]>sum) sum=a[i];//不断的更新最大值。 18 } 19 printf("%d\n",sum); 20 } 21 return 0; 22 } 23
posted on 2012-11-14 21:48 LinuxPanda 阅读(357) 评论(0) 编辑 收藏 举报