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

\(f_{i,0}\) 表示到了第 \(i\) 天,当前买了股票的最大利润;\(f_{i,1}\) 表示到了第 \(i\) 天,当前没有买股票的最大利润。(还是不一定要刚好第 \(i\) 天满足这个条件,可以 \(1\to 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);//注意要在卖出的时候付这个手续费

代码

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];
    }
};
posted @ 2022-06-11 15:10  A_zjzj  阅读(24)  评论(0编辑  收藏  举报