题解 | #给定整数序列求连续子串最大和#
给定整数序列求连续子串最大和
https://www.nowcoder.com/practice/5a93963ecd2444a29c3e078e0a0c8796
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> a;
int b;
while(cin>>b){
a.push_back(b);
char ch = getchar();
if(ch == '\n')
break;
}
int n = a.size();
vector<int> dp(n);
dp[0] = a[0];
int res = dp[0];
for(int i = 1;i < n;i++)
{
if(a[i]>(a[i]+dp[i-1]))
dp[i] = a[i];
else
dp[i] = a[i]+dp[i-1];
if(res<dp[i])
res = dp[i];
}
cout<<res<<endl;
}
#include<vector>
using namespace std;
int main()
{
vector<int> a;
int b;
while(cin>>b){
a.push_back(b);
char ch = getchar();
if(ch == '\n')
break;
}
int n = a.size();
vector<int> dp(n);
dp[0] = a[0];
int res = dp[0];
for(int i = 1;i < n;i++)
{
if(a[i]>(a[i]+dp[i-1]))
dp[i] = a[i];
else
dp[i] = a[i]+dp[i-1];
if(res<dp[i])
res = dp[i];
}
cout<<res<<endl;
}