文章

121

粉丝

0

获赞

125

访问

7.6k

头像
最大连续子序列 题解:

#include <bits/stdc++.h>
using namespace std;

int main() {    
    int n;
    while (cin >> n && n != 0) {
        vector<long long> a(n);
        for (int i = 0; i < n; i++) 
			cin >> a[i];      
        // 全负数检查
        bool allNeg = true;
        for (int x : a) 
			if (x >= 0) { 
				allNeg = false; 
				break; 
			}       
        if (allNeg) {
            cout << 0 << " " << a[0] << " " << a[n-1] << endl;
            continue;
        }       
        // 记录以i结尾的最优解
        long long curSum = a[0];
        int curL = 0;        
        long long bestSum = a[0];
        int bestL = 0, bestR = 0;        
        for (int i = 1; i < n; i++) {
            // 关键:>= 保证相等时延续,使终点j更小
            if (curSum + a[i] >= a[i]) {
                curSum += a[i];
            } else {
                curSum = a[i];
                curL = i;
            }            
           ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发