注意本题数据较大,需要用到 long long 类型(long 类型与 int 类型 都为四字节,因此范围相同)
#include<iostream>
using namespace std;
const int maxn=1000001;
long long N[maxn];
long long dp[maxn];
long long getmaxdp(int n){
dp[0]=N[0];
int i=1;
while(i<n){
if(dp[i-1]>0){
dp[i]=dp[i-1]+N[i];
}else{
dp[i]=N[i];
}
i++;
}
long long answer=dp[0];
for(int i=0;i<n;i++){
if(dp[i]>answer){
answer=dp[i];
}
}
return answer;
}
int main(){
int n;
while(cin>>n){
for(int i=0;i<n;i++){
cin>>N[i];
}
cout<<getmaxdp(n)<<endl;
}
}



京公网安备 11010502036488号