股票问题(多次买卖),动态规划

 

public static int MaxProfit(int[] prices)
{
int priceSize = prices.Length;
int [,] dp=new int[priceSize,2];//同一天有两种状态, [i,0]为第i天没有股票的利润,[i,1]为i天持有股票的利润
dp[0,0] = 0; dp[0,1] = -prices[0];//初始化,第一天没有进行股票交易为0,第一天买入股票,利润为-price[0]。
for (int i = 1; i < priceSize; i++)
{
dp[i,0] = Math.Max(dp[i - 1,0], dp[i - 1,1] + prices[i]);//i天m没有股票股票,利润为前一天卖出的利润,与i天卖出股票时利润的最大值
dp[i,1] = Math.Max(dp[i - 1,1], dp[i - 1,0] - prices[i]);//i天持有股票时的利润,为前一天持有股票时的利润,或者今天买入股票的利润的最大值。
}
return dp[priceSize - 1,0];
}

  

posted @ 2024-06-02 22:49  yinghualeihenmei  阅读(20)  评论(0)    收藏  举报