7-1 最大子列和问题 (20 分)
思路:
1.设置maxn作为最大值,maxn_temp作为临时最大值;
2.依次读入数据,并加到maxn_temp中,如果数据的读入导致maxn_temp变成负值,则舍去
3.如果不为负值,继续叠加,如果maxn_temp大于maxn,则覆盖maxn,否则不操作(maxn忠实的记录着已知的最大值,所以不用担心万一读入负值,即 正 负 正 情况下的负导致的maxn_temp变小)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n ;
cin>>n ;
int maxn=0 , maxn_temp=0 ;
while(n--)
{
int num ;
cin>>num ;
maxn_temp=maxn_temp+num ;
if(maxn_temp<0)
{
maxn_temp=0 ;
}else
{
if(maxn_temp>maxn)
maxn=maxn_temp ;
}
}
cout<<maxn ;
}