文章

25

粉丝

0

获赞

213

访问

7.6k

头像
最大序列和 题解:
P1172 清华大学/兰州大学机试题
发布于2026年3月15日 10:34
阅读数 250

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

const int N = 1e6 + 5;
long long dp[N]; //dp[i]表示以a[i]结尾的子串序列和
long long a[N];

long long mx(long long a,long long b){
    if(a >= b) return a;
    else return b;
}

int main(){
    int n;
    while(cin >> n){
        for(int i = 0; i < n; i++){
            cin >> a[i];
        }

        dp[0] = a[0];
        long long ans = (-1) * (1LL << 63);
        for(int i = 1; i < n; i++){
            if(dp[i-1] > 0){
                dp[i] = dp[i-1] + a[i];
                ans = mx(ans, dp[i]);
            }else{
                 dp[i] = a[i];
                ans = mx(ans,dp[i]);
            }
        }
        printf("%lld\n",ans);
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发