题解 | #连续最大和#
连续最大和
https://www.nowcoder.com/practice/5a304c109a544aef9b583dce23f5f5db
#include <iostream>
#include<vector>
using namespace std;
class solution
{
private:
vector<int>v;
public:
solution(){}
//连续最大和
int getMaxSum(vector<int>elements)
{
int max_value=elements[0];
vector<int>dp(elements.size(),0);
dp[0]=elements[0];
for(int i=1;i<elements.size();i++)
{
dp[i]=max(dp[i-1]+elements[i],elements[i]);
max_value=max(dp[i],max_value);
}
return max_value;
}
};
int main() {
int n;
cin>>n;
//cout<<n<<endl;
vector<int>v(n);
int a;
int i=0;
while (cin >> a) { // 注意 while 处理多个 case
v[i++]=a;
}
cin.clear();
rewind(stdin);
solution s;
int res=s.getMaxSum(v);
//printf("%11d\n",res);
cout<<res<<endl;
system("pause");
return 0;
}
// 64 位输出请用 printf("%lld")
