题目描述
给定一整型数列${a1,a2…,an}$,找出连续非空子串${ax,ax+1,…,ay}$,使得该子序列的和最大,其中,$1<=x<=y<=n$。
输入
第一行是一个整数$N$ $(N<=10)$表示测试数据的组数
每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数$I$ $(-1000=I<=1000)$,表示数列中的所有元素。$(0<n<=100)$
输出
对于每组测试数据输出和最大的连续子串的和。
样例输入
样例输出
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <iostream> #include <algorithm> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int T; cin>>T; int tmp[10001]; int arr[10001]; while(T--) { int n; cin >> n; fill(arr, arr + n, 0); for (int i = 0; i < n; i++)cin >> tmp[i]; arr[0] = tmp[0]; for (int i = 1; i < n; i++)arr[i] = max(arr[i], arr[i - 1] + tmp[i]); cout << *max_element(arr, arr + n) << endl; } return 0; }
|