代码随想录刷题60Day
目录
前言
含冷冻期的股票买卖最佳时期
含手续费的股票买卖最佳时期
前言
今天的股票买卖问题会附加一些条件,但总体难度不大。
含冷冻期的股票买卖最佳时期

该问题难点在于对几个状态进行解构并写出相应的状态转移方程。
	int maxProfit(vector<int>& prices) 
	{
		int size = prices.size();
		vector<vector<int>> dp(size, vector<int>(4, 0));
		dp[0][0] = -prices[0];
		// 0: 买入(持有)  1:卖出(未持有)  2:可购入(未持有)  3:不可操作(冷冻期, 未持有)
		for (int i = 1; i < size; ++i)
		{
			dp[i][0] = max(dp[i - 1][0], max(dp[i - 1][2], dp[i - 1][3]) - prices[i]);
			dp[i][1] = dp[i - 1][0] + prices[i];
			dp[i][2] = max(dp[i - 1][2], dp[i - 1][3]);
			dp[i][3] = dp[i - 1][1];
		}
		return max(dp[size - 1][1], max(dp[size - 1][2], dp[size - 1][3]));
	}含手续费的股票买卖最佳时期

	int maxProfit(vector<int>& prices, int fee)
	{
		int size = prices.size();
		vector<vector<int>> dp(2, vector<int>(2, 0));
		dp[0][0] = -prices[0] - fee;
		for (int i = 1; i < size; ++i)
		{
			dp[i % 2][0] = max(dp[(i - 1) % 2][0], dp[(i - 1) % 2][1] - prices[i] - fee);
			dp[i % 2][1] = max(dp[(i - 1) % 2][1], dp[(i - 1) % 2][0] + prices[i]);
		}
		return dp[(size - 1) % 2][1];
	}

















![[NSSCTF 2nd] 2023 web方向和misc方向题解 wp](https://img-blog.csdnimg.cn/img_convert/6419120e7b33d6996d2635cdd76f0364.png)
