【动态规划】最大子串和
时间限制: 1 Sec 内存限制: 128 MB
题目描述
给定一整型数列{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
1 #include <iostream> 2 #define INF 0x3f3f3f 3 using namespace std; 4 5 int N,n,a,sum,maxx; 6 7 int main() 8 { 9 while(cin>>N) 10 { 11 while(N--) 12 { 13 cin>>n; 14 sum=0; 15 maxx=-INF; 16 for(int i=0;i<n;i++) 17 { 18 cin>>a; 19 if(a>=sum+a) 20 sum=a; 21 else 22 sum+=a; 23 if(maxx<sum) 24 maxx=sum; 25 } 26 cout<<maxx<<endl; 27 } 28 } 29 return 0; 30 }
时间: 2024-10-21 16:00:35