zoukankan      html  css  js  c++  java
  • 188. 买卖股票的最佳时机 IV(三维dp)

    188. 买卖股票的最佳时机 IV

    解释见代码:

    class Solution {
    public:
        int maxProfit(int k, vector<int>& prices) {
            if(prices.size()==0||k==0)
                return 0;
            if(k>=prices.size()/2)
            {
                int dp[prices.size()+10][3];
                dp[0][0]=0;
                dp[0][1]=-prices[0];
                for(int i=1;i<prices.size();i++)
                {
                    dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i]);
                    dp[i][1]=max(dp[i-1][1],dp[i-1][0]-prices[i]);
                }
                return dp[prices.size()-1][0];
            }//无限次交易 
            int dp[prices.size()+10][2][k+10];//i天  手上是否有票  当前是第几次交易
            for(int i=0;i<=k;i++)//初始化
            {
                dp[0][0][i]=0;//第一天手上没票的利润为0 不管交易多少次
                dp[0][1][i]=-prices[0];//第一天手上有票利润为负的成本 不管交易多少次
            }
            for(int i=1;i<prices.size();i++)
            {
                for(int j=0;j<=k;j++)//k次交易
                {
                    if(j==0)
                        dp[i][0][j]=dp[i-1][0][j];//第0次交易手上没票的话 状态为上一次的状态
                    else
                        dp[i][0][j]=max(dp[i-1][0][j],dp[i-1][1][j-1]+prices[i]);//第j次交易手上没票:1.前一天也没票交易今天也没票,因此还是j次交易 2.前一天手上有票,今天卖掉,前一天的交易次数是j-1,加上今天之后的是j次  
                    dp[i][1][j]=max(dp[i-1][1][j],dp[i-1][0][j]-prices[i]);//第j次交易手上有票:1.前一天也有票,今天也有票,没卖掉,那么还是j次交易 2.前一天手上没票,今天买入,买入不算一次交易还是j次交易
                }
            }
            int maxx=0;
            for(int i=0;i<=k;i++)
            {
                maxx=max(maxx,dp[prices.size()-1][0][i]);//取每次交易的最大值
            }
            return maxx;
        }
    };
  • 相关阅读:
    RocketMQ视频
    框架进度
    待做事项
    lombok.Data报错问题
    cannot touch "dev/dir/tomcat/a.txt"
    服务器命令
    小知识汇总----不断更新中...
    消息推送APNS--------借鉴前人经验,自己实践验证
    iOS开发之企业账号最新申请流程
    solr4.3+tomcat入门部署(转自http://qindongliang1922.iteye.com/blog/1893254)
  • 原文地址:https://www.cnblogs.com/Vampire6/p/13046741.html
Copyright © 2011-2022 走看看