#include <algorithm>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param energy int整型vector
     * @return int整型
     */
    int maxEnergy(vector<int>& energy) {
        // write code here
        int dp[energy.size()];
        int maxsum = energy[0];
        dp[0] = energy[0];
        for (int i = 1; i < energy.size(); ++i) {
            dp[i] = max(dp[i - 1] + energy[i], energy[i]);
            maxsum = max(maxsum, dp[i]);
        }
        return maxsum;
    }
};

dp[i]表示以energy[i]结尾的最大连续子序列之和,dp[i] = max(dp[i - 1] + energy[i], energy[i]);表示当前的元素加上上一个最大子序列之和的值是否比当前元素单独作为子序列的值大,若是则更新。每次更新最大值最后返回即可。