代码拉取完成,页面将自动刷新
package main
import (
"fmt"
"math"
)
func minCostII(costs [][]int) int {
n, k := len(costs), len(costs[0])
dp := make([][]int,n + 1, n + 1)
for i := 0 ; i < n + 1 ; i ++{
dp[i] = make([]int,k,k)
}
// 1.初始化dp
for i := 0 ; i < k ; i ++ {
dp[0][i] = costs[0][i]
}
// 2.填充dp
for i := 1 ; i < n ; i++ {
for j := 0 ; j < k ; j ++ {
minDP := math.MaxInt32
for m := 0 ; m < k ; m ++ {
if m == j {
continue
}
if minDP > dp[i-1][m] {
minDP = dp[i-1][m]
}
}
dp[i][j] = minDP + costs[i][j]
}
}
res := math.MaxInt32
for i := 0 ; i < k ; i++ {
if dp[n-1][i] < res {
res = dp[n-1][i]
}
}
return res
}
func min(a, b int) int {
if a < b {
return a
}
return b
}
func main() {
arr := [][]int{{3,20,7,7,16,8,7,12,11,19,1},{10,14,3,3,9,13,4,12,14,13,1}}
fmt.Println(minCostII(arr))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。