洛谷 P1115 最大子段和
贪心思路:
如果前方的累加和小于0,那么再往后面加相当于给后面的数加上了“累赘”,倒不如直接舍弃前面的累加和,从头开始。
DP解释:
f[i]=max(f[i-1]+n[i],n[i]),转移方程在此。
下方用贪心写。
AcCode:
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
ll N, ans = -1e5, sum = 0;
cin >> N;
for(int i = 1; i <= N; i++){
ll k;
cin >> k;
sum += k;
ans = max(ans, sum);
if(sum < 0) sum = 0;
}
cout << ans;
return 0;
}