亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用golang求出將n堆石子合并成一堆的最小得分

發布時間:2021-10-13 11:33:23 來源:億速云 閱讀:138 作者:iii 欄目:編程語言

本篇內容主要講解“如何使用golang求出將n堆石子合并成一堆的最小得分”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用golang求出將n堆石子合并成一堆的最小得分”吧!

代碼用golang編寫。代碼如下:

package main

import (
    "fmt"
    "math"
)

func main() {
   
    arr := []int{
   1, 4, 2, 3}
    ret := StoneMerge(arr)
    fmt.Println(ret)

}
func sum(arr []int) []int {
   
    N := len(arr)
    s := make([]int, N+1)
    s[0] = 0
    for i := 0; i < N; i++ {
   
        s[i+1] = s[i] + arr[i]
    }
    return s
}
func w(s []int, l int, r int) int {
   
    return s[r+1] - s[l]
}
func StoneMerge(arr []int) int {
   
    if len(arr) < 2 {
   
        return 0
    }
    N := len(arr)
    s := sum(arr)
    dp := make([][]int, N)
    for i := 0; i < N; i++ {
   
        dp[i] = make([]int, N)
    }
    best := make([][]int, N)
    for i := 0; i < N; i++ {
   
        best[i] = make([]int, N)
    }
    for i := 0; i < N-1; i++ {
   
        best[i][i+1] = i
        dp[i][i+1] = w(s, i, i+1)
    }
    for L := N - 3; L >= 0; L-- {
   
        for R := L + 2; R < N; R++ {
   
            next := math.MaxInt64
            choose := -1
            for leftEnd := best[L][R-1]; leftEnd <= best[L+1][R]; leftEnd++ {
   
                cur := dp[L][leftEnd] + dp[leftEnd+1][R]
                if cur <= next {
   
                    next = cur
                    choose = leftEnd
                }
            }
            best[L][R] = choose
            dp[L][R] = next + w(s, L, R)
        }
    }
    return dp[0][N-1]
}

執行結果如下:
如何使用golang求出將n堆石子合并成一堆的最小得分

到此,相信大家對“如何使用golang求出將n堆石子合并成一堆的最小得分”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴南区| 城市| 枝江市| 德惠市| 安国市| 台东县| 龙陵县| 鹤壁市| 新源县| 西藏| 吐鲁番市| 阳高县| 霞浦县| 清丰县| 乌鲁木齐县| 介休市| 宁陕县| 剑河县| 台江县| 通山县| 巴塘县| 许昌县| 和林格尔县| 茌平县| 乌鲁木齐市| 垫江县| 苏尼特右旗| 韩城市| 漳浦县| 普格县| 秦安县| 鄂托克前旗| 萨迦县| 高陵县| 永清县| 翁牛特旗| 岗巴县| 玉门市| 东台市| 岳阳市| 藁城市|