酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

def knapsack(n, g, w, v): dp = [[0] * (g + 1) for _ in range(n + 1)] for i in range(1, n + 1): for j in range(1, g + 1): if w[i - 1] <= j: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i - 1]] + v[i - 1]) else: dp[i][j] = dp[i - 1][j] max_value = dp[n][g] def backtrack(i, j, path, current_value): if i == 0 or j == 0: if current_value == max_value: s

path.append(s) return path if dp[i][j] == dp[i - 1][j]: return backtrack(i - 1, j, path, current_value) path.append(i - 1) return backtrack(i - 1, j - w[i - 1], path, current_value - v[i - 1]) return backtrack(n, g, [], max_value) [2024-06-09 19:21:11 | AI写代码神器 | 191点数解答]

相关提问