我理解的此题动态规划:
考察以arr[i]为结尾的删除和不删除的两种情况,注意这里不是考察区间[0,i]而是以arr[i]为结尾
class Solution {
public:
int maximumSum(vector<int>& arr) {
vector<vector<int>> dp(arr.size(),vector<int>(2));
dp[0][0]=arr[0];
dp[0][1]=0;
int res=arr[0];
for(int i=1;i<arr.size();i++){
dp[i][0]=max(dp[i-1][0]+arr[i],arr[i]);
dp[i][1]=max(dp[i-1][0],dp[i-1][1]+arr[i]);
res=max(res,max(dp[i][0],dp[i][1]));
}
return res;
}
};