zoukankan      html  css  js  c++  java
  • 123. 买卖股票的最佳时机 III

    状态表示:

    • (f(i,0,k)):表示当前为第(i)天,手里没有股票,交易次数不超过(k)次的最大利润;
    • (f(i,1,k)):表示当前为第(i)天,手里有股票,交易次数不超过(k)次的最大利润。

    状态转移:
    (i)天手里没有股票有两种情况:

    1. (i-1)天手里没有股票;
    2. (i-1)天手里有股票,在第(i)天卖出,此时交易次数加一。

    (i)天手里有股票同样有两种情况:

    1. (i-1)天手里有股票
    2. (i-1)天手里没有股票,在第(i)天购入股票,此时仅购入了股票,没有卖出,故交易次数不变。

    [f(i,0,k)=max (f(i-1,0,k),f(i-1,1,k-1)+prices[i]) \ f(i,1,k)=max(f(i-1,0,k)-prices[i],f(i-1,1,k)); ]

    边界:

    [f[0][0][0 sim 2] = 0,f[0][1][0 sim 2] = prices[0] ]

    class Solution {
    public:
        static const int N=1e5+10;
        int f[N][2][3];
        int maxProfit(vector<int>& prices) {
            int n=prices.size();
    
            for(int i=0;i<n;i++)
                for(int k=0;k<=2;k++)
                {
                    if(i == 0)
                    {
                        f[i][0][k]=0;
                        f[i][1][k]=-prices[i];
                    }
                    else
                    {
                        f[i][0][k]=f[i-1][0][k];
                        if(k) f[i][0][k]=max(f[i][0][k],f[i-1][1][k-1]+prices[i]);
                        f[i][1][k]=max(f[i-1][1][k],f[i-1][0][k]-prices[i]);
                    }
                }
            return f[n-1][0][2];
        }
    };
    
  • 相关阅读:
    bloom filter
    【转】单实例
    Log Structured Merge Trees(LSM) 原理
    【转】南网成立始末
    变电站综合自动化系统
    bsp tree
    Private Bytes,Working Set,Virtual Size的区别
    kdtree
    asp.net下载文件几种方式
    C# FTP操作
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14566942.html
Copyright © 2011-2022 走看看