#include <iostream>
using namespace std;
int n;
int A[1010];
int dp[1010];
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&A[i]);
}
//边界
dp[0]=A[0];
for(int i=1;i<n;i++){
int max2=((dp[i-1]+A[i])>A[i])?(dp[i-1]+A[i]):A[i];
dp[i]=max2;
}
int max_sum=0;
for(int i=0;i<n;i++){
if(dp[i]>max_sum){
max_sum=dp[i];
}
}
printf("%d",max_sum);
return 0;
}
状态的无后效性:
当前状态记录了历史信息,
一旦当前状态确定,就不会再改变,
且未来的决策只能在已有的一个或若干个状态的基础上进行,
历史信息只能通过已有的状态去影响未来的决策。