dp问题,一般想再加入一个数的下一个状态的可能性
问题1:买股票的最佳时机1
给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格。
在每一天,你可能会决定购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以购买它,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
示例:输入: prices = [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
自己的想法
这是一道简单的dp问题,对于这道题,应该思考当我们在已经得到的状态中再加入一天的新状态,更新新状态;
具体的思路就是用a和b记录前面最后一次买入卖出的位置,当1:prices[i]<=b时就可以把前面的结果加到总结果中去。并且更新a,b都为prices[i];
2:当prices[i]>b时,只需要更新b的值就好
代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
int sum=0;
int a,b;
a=b=prices[0];//这一步是灵魂
for(int i=0;i<prices.size();i++