golang解决01背包问题示例代码

代码语言:golang

所属分类:算法

代码描述:golang解决01背包问题示例代码,01背包问题就是你需要选择一组物品放入一个背包,以使它们的总价值最大化,同时不超过背包的容量限制。

代码标签: golang 解决 01 背包 问题 示例 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

package main

import "fmt"

func knapsack(values []int, weights []int, capacity int) (int, []int) {
    n := len(values)
    dp := make([][]int, n+1)
    for i := range dp {
        dp[i] = make([]int, capacity+1)
    }

    for i := 1; i <= n; i++ {
        for w := 1; w <= capacity; w++ {
            if weights[i-1] <= w {
                dp[i][w] = max(dp[i-1][w], values[i-1]+dp[i-1][w-weights[i-1]])
            } else {
                dp[i][w] = dp[i-1][w]
            }
        }
    }

    selectedItems := make([]int, 0)
    i, w := n, capacity
    for i > .........完整代码请登录后点击上方下载按钮下载查看

网友评论0