dp[i][0]表示手上没有股票,一个是之前没有股票,一个是之前有股票然后卖掉了
dp[i][1]表示手上有股票,一个是之前有股票,一个是之前没有股票,然后买了
class Solution { public: int maxProfit(vector<int>& prices, int fee) { if(prices.size()==1) return 0; int dp[prices.size()+10][2]; dp[0][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]-fee); dp[i][1]=max(dp[i-1][1],dp[i-1][0]-prices[i]); } return dp[prices.size()-1][0]; } };
原文:https://www.cnblogs.com/Vampire6/p/13033955.html