LCR 161. 连续天数的最高销售额
动态规划
class Solution {
public:
int maxSales(vector<int>& sales) {
// 1. 明确状态含义:dp[i]表示[0, i]区间连续的最大值
int salesSize = sales.size();
vector<int> dp(salesSize, 0);
// 2. base状态初始化
dp[0] = sales[0];
int result = dp[0];
// 3. 状态转移
for(int i = 1; i < salesSize; i++){
// 如果 dp[i - 1] <= 0,那么 nums[i] 加上前面的数 dp[i - 1] 以后值不会变大。
// 于是 dp[i] 重新开头,此时单独的一个 nums[i] 的值,就是 dp[i]。
if(dp[i - 1] <= 0){
dp[i] = sales[i];
}
// 如果 dp[i - 1] > 0,就可以把 nums[i] 直接接在 dp[i - 1] 表示的那个数组的后面,得到和更大的连续子数组;
else{
dp[i] = dp[i - 1] + sales[i];
}
result = max(dp[i], result);
}
return result;
}
};