這是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;
}