1007. Maximum Subsequence Sum (25)

xiaoxiao2021-02-28  12

简析:求最大子列和,并输出其首末元素。在线处理,关键在于求首末元素。

本题囧,16年9月做出来过,现在15分钟只能拿到22分,有一个测试点过不了。所以现在的答案是当时的。

#include <iostream> using namespace std; int main(int argc, const char * argv[]) { int n, N = 0, sum = 0, maxsum = 0; cin >> n; int a[n]; for (int i = 0; i < n; i++) { cin >> a[i]; if(a[i] < 0){ N++; } } int cnt = 0, l = 0, r = 0; for (int i = 0; i < n; i++) { sum += a[i]; cnt++; if (sum < 0) { sum = 0; cnt = 0; } if (sum > maxsum) { maxsum = sum; l = a[i-cnt+1]; r = a[i]; } } if (n == N) { l = a[0]; r = a[n-1]; } cout << maxsum << ' ' << l << ' ' << r << endl; return 0; }

转载请注明原文地址: https://www.6miu.com/read-2449980.html

最新回复(0)