题解 | #最大子串和#

最大子串和

https://ac.nowcoder.com/acm/problem/235948

从某一个数字来看,它的最大连续子串和是前面一个数字的最大连续子串和加上它本身,和他本身取较大的那一个。当位于第一个的时候自然就是他自身所以可以实现一个动态规划。
故递推式:dp[i] = max(dp[i-1]+dp[i], dp[i])。
//dp[i] = max(dp[i-1]+dp[i], dp[i])
#include <bits/stdc++.h>


using namespace std;
#define int long long
const int maxn = 1e6+10;
int n;
int a[maxn];
int dp[maxn];

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for (int i=1;i<=n;i++) {
        cin>>a[i];
    }
    int ans = 0;
    for (int i=1;i<=n;i++) {
        dp[i] = max(dp[i-1]+a[i], dp[i]);
        ans = max(ans, dp[i]);
    }
    cout<<ans;
    return 0;
}


全部评论

相关推荐

程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务