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

 

1
2
3
4
5
6
7
8
9
10
11
12
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 @   yinghualeihenmei  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-06-02 关于word-wrap: break-word; word-break: break-all;影响页面格式
点击右上角即可分享
微信分享提示