算法训练营day42(补),动态规划10

func max(a, b int) int {

if a > b {

return a

}

return b

}

//121. 买卖股票的最佳时机

func maxProfit1(prices \[\]int) int {

n := len(prices)

dp := make(\[\]\[\]int, n)

for i := 0; i < n; i++ {

dpi = make(\[\]int, 2)

}

dp00 = -prices0

dp01 = 0

for i := 1; i < n; i++ {

//买入后利润

dpi0 = max(dpi-10, -pricesi)

//不持有的利润

dpi1 = max(dpi-11, dpi-10+pricesi)

}

return dpn-11

}

//122. 买卖股票的最佳时机 II

func maxProfit2(prices \[\]int) int {

n := len(prices)

dp := make(\[\]\[\]int, n)

for i := 0; i < n; i++ {

dpi = make(\[\]int, 2)

}

dp00 = -prices0

dp01 = 0

for i := 1; i < n; i++ {

//买入后利润

dpi0 = max(dpi-10, dpi-11-pricesi)

//不持有的利润

dpi1 = max(dpi-11, dpi-10+pricesi)

}

return dpn-11

}

//123. 买卖股票的最佳时机 III

func maxProfit3(prices \[\]int) int {

n := len(prices)

dp := make(\[\]\[\]int, n)

for i := 0; i < n; i++ {

dpi = make(\[\]int, 5)

}

dp01 = -prices0

dp03 = -prices0

for i := 1; i < n; i++ {

//第一次买入后的利润

dpi1 = max(dpi-11, -pricesi)

//第一次不持有的利润

dpi2 = max(dpi-12, dpi-11+pricesi)

//第二次买入后的利润

dpi3 = max(dpi-13, dpi-12-pricesi)

//第二次不持有的利润

dpi4 = max(dpi-14, dpi-13+pricesi)

}

return dpn-14

}

相关推荐
待磨的钝刨3 小时前
深入理解主成分分析(PCA)
人工智能·线性代数·算法·机器学习
程序员爱钓鱼4 小时前
第一个 Go 程序:Hello World
前端·后端·go
名字还没想好☜5 小时前
Go 的 select 实战:超时、非阻塞收发与优雅退出的三个套路
开发语言·数据库·golang·go·并发
geovindu5 小时前
java: Backtracking Algorithm
java·开发语言·windows·后端·算法·回溯算法
晚风叙码5 小时前
C++ vector底层模拟实现与迭代器失效深度剖析
c++·算法
To_OC13 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
2401_8414956414 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
爱刷碗的苏泓舒18 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽20 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法