leetcode714. 买卖股票的最佳时机含手续费--zhengjun

it2023-09-26  75

f i , 0 f_{i,0} fi,0 表示到了第 i i i 天,当前买了股票的最大利润; f i , 1 f_{i,1} fi,1 表示到了第 i i i 天,当前没有买股票的最大利润。(还是不一定要刚好第 i i i 天满足这个条件,可以 1 → i 1\to i 1i 中的某个值满足)

显然,递推式就是

f[i][0]=max(f[i-1][0],f[i-1][1]-a[i]); f[i][1]=max(f[i-1][1],f[i-1][0]+a[i]-k);//注意要在卖出的时候付这个手续费

代码

class Solution { public: int n,f[100001][2]; int maxProfit(vector<int>& a,int k) { n=a.size(); f[0][0]=-a[0]; for(int i=1;i<n;i++){ f[i][0]=max(f[i-1][0],f[i-1][1]-a[i]); f[i][1]=max(f[i-1][1],f[i-1][0]+a[i]-k); } return f[n-1][1]; } };
最新回复(0)