引子
这是PTA上的例题,可自行搜索练习
题目
分析
这道题其实就是引子里讲到的最大子列和问题
唯一需要注意的是,当所有数为负数时,如-2,-1,-3;输出的答案应该是-1不是0,因为题目要求至少要选择一个
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;//有几个数要处理
cin>>n;
int ans=INT_MIN,res=0; //ans为此时答案,res为加上读入后的数的总和
while(n--){
int x;
cin>>x;
res+=x;
ans=max(ans,res);//如果res>ans,则把x加入;否则保ans持自己本身
if(res<0) res=0;//因为当res<0时,就已经没有取这个值的必要,于是把ans重置为0
}
cout<<ans;
return 0;
}