From b4e4779b9314787df1e3cd39933e531204355521 Mon Sep 17 00:00:00 2001 From: zhangzw Date: Tue, 8 Jun 2021 10:48:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=83=8C=E5=8C=85=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E7=90=86=E8=AE=BA=E5=9F=BA=E7=A1=80=E5=AE=8C=E5=85=A8?= =?UTF-8?q?=E8=83=8C=E5=8C=85=20Go=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../背包问题理论基础完全背包.md | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/problems/背包问题理论基础完全背包.md b/problems/背包问题理论基础完全背包.md index 9997dff3..a5a708cf 100644 --- a/problems/背包问题理论基础完全背包.md +++ b/problems/背包问题理论基础完全背包.md @@ -220,7 +220,58 @@ if __name__ == '__main__': Go: +```go +// test_CompletePack1 先遍历物品, 在遍历背包 +func test_CompletePack1(weight, value []int, bagWeight int) int { + // 定义dp数组 和初始化 + dp := make([]int, bagWeight+1) + // 遍历顺序 + for i := 0; i < len(weight); i++ { + // 正序会多次添加 value[i] + for j := weight[i]; j <= bagWeight; j++ { + // 推导公式 + dp[j] = max(dp[j], dp[j-weight[i]]+value[i]) + // debug + //fmt.Println(dp) + } + } + return dp[bagWeight] +} + +// test_CompletePack2 先遍历背包, 在遍历物品 +func test_CompletePack2(weight, value []int, bagWeight int) int { + // 定义dp数组 和初始化 + dp := make([]int, bagWeight+1) + // 遍历顺序 + // j从0 开始 + for j := 0; j <= bagWeight; j++ { + for i := 0; i < len(weight); i++ { + if j >= weight[i] { + // 推导公式 + dp[j] = max(dp[j], dp[j-weight[i]]+value[i]) + } + // debug + //fmt.Println(dp) + } + } + return dp[bagWeight] +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func main() { + weight := []int{1, 3, 4} + price := []int{15, 20, 30} + fmt.Println(test_CompletePack1(weight, price, 4)) + fmt.Println(test_CompletePack2(weight, price, 4)) +} +```