买卖股票的动态规划通用方法
参考:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii/solution/yi-ge-tong-yong-fang-fa-tuan-mie-6-dao-gu-piao-wen/
具体题目
class Solution {
public:
int maxProfit(vector<int>& prices) {
//买股票的最佳时机算法使用动态规划
//考虑当前的时间我们是持有股票还是没有持有股票,分情况讨论算法
int len = prices.size();
if(len==0)
return 0;
vector<vector<int> > dp(len,vector<int>(2, 0));
for (int i = 0; i<len; ++i)
{
if (i == 0)
{
dp[i][0] = 0;
dp[i][1] = -prices[i];
continue;
}
dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
dp[i][1] = max(dp[i - 1][1], 0- prices[i]);
}
return dp[len - 1][0];
}
};
class Solution {
public:
int maxProfit(vector<int>& prices) {
//买股票的最佳时机算法使用动态规划
//考虑当前的时间我们是持有股票还是没有持有股票,分情况讨论算法
int len = prices.size();
if(len==0)
return 0;
vector<vector<int> > dp(len,vector<int>(2, 0));
for (int i = 0; i<len; ++i)
{
if (i == 0)
{
dp[i][0] = 0;
dp[i][1] = -prices[i];
continue;
}
dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
dp[i][1] = max(dp[i - 1][1], dp[i-1][0]- prices[i]);
}
return dp[len - 1][0];
}
};