买卖股票的最佳时机之k天
- 题目描述
- 算法描述
- 编程代码
链接: 买卖股票的最佳时机之k天
题目描述
算法描述
编程代码
class Solution {
public:
int maxProfit(int k, vector<int>& prices) {
int n = prices.size();
k = min(k,n/2);
vector<vector<int>> f(n,vector<int>(k+1,-0x3f3f3f));
auto g = f;
f[0][0] = -prices[0];
g[0][0] = 0;
for(int i = 1;i<n;i++)
{
for(int j = 0;j<=k;j++)
{
f[i][j] = max(f[i-1][j],g[i-1][j] - prices[i]);
g[i][j] = g[i-1][j];
if(j - 1 >= 0)
{
g[i][j] = max(g[i][j],f[i-1][j-1]+prices[i]);
}
}
}
int ret = 0;
for(int j = 0;j<=k;j++)
{
ret = max(ret,g[n-1][j]);
}
return ret;
}
};