注意本题数据较大,需要用到 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; } }