Leetcode 1186. 删除一次得到子数组最大和(DAY 50) ---- 动态规划学习期(第一题开始 今天把Attack Lab补了)

原题题目

在这里插入图片描述



代码实现(首刷大部分看解小部分自解)

int maximumSum(int* arr, int arrSize){
    
    
    int dp[100001][2],i,ret;
    dp[0][0] = arr[0];
    dp[0][1] = INT_MIN;
    ret = fmax(dp[0][0],dp[0][1]);
    for(i=1;i<arrSize;i++)
    {
    
    
        dp[i][0] = fmax(arr[i],dp[i-1][0]+arr[i]);
        dp[i][1] = fmax((dp[i-1][1] == INT_MIN ? 0 : dp[i-1][1]) + arr[i],dp[i-1][0]);
        ret = fmax(ret,fmax(dp[i][0],dp[i][1]));
    }
    return ret;
}

猜你喜欢

转载自blog.csdn.net/qq_37500516/article/details/113877110