题解 | #完全背包#
完全背包
https://www.nowcoder.com/practice/3ed13831e2cc4613866edee237d5a804
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param v int整型 * @param n int整型 * @param nums int整型二维数组 * @return int整型一维数组 */ func knapsack( v int , n int , nums [][]int ) []int { dp,dp1 := make([]int, v + 1), make([]int, v + 1) for i := 1; i <= v; i++ { max, max1 := 0, 0 for j := 1; j <= len(nums);j++ { if i >= nums[j - 1][0] { if max < dp[i - nums[j - 1][0]] + nums[j - 1][1] { max = dp[i - nums[j - 1][0]] + nums[j - 1][1] } if i - nums[j - 1][0] != 0 && dp1[i - nums[j - 1][0]] == 0 { continue } if max1 < dp1[i - nums[j - 1][0]] + nums[j - 1][1] { max1 = dp1[i - nums[j - 1][0]] + nums[j - 1][1] } } } dp[i], dp1[i] = max, max1 } return []int{dp[v], dp1[v]} }