def coin_collect(coins, weights, capacity): n = len(coins) dp = [0] * (capacity + 1) for i in range(n): for w in range(capacity, weights[i]-1, -1): dp[w] = max(dp[w], dp[w-weights[i]] + coins[i]) return dp[capacity]