def max_coins(coins, amount):
# 创建一个数组来保存子问题的解
dp = [float('inf')] * (amount + 1)
dp[0] = 0 # 收集金额为0的硬币数为0
for coin in coins:
for i in range(coin, amount + 1):
dp[i] = min(dp[i], dp[i - coin] + 1)
return dp[amount] if dp[amount] != float('inf') else -1
# 测试硬币收集问题
coins = [1, 2, 5]
amount = 11
result = max_coins(coins, amount)
print(f"最大硬币数量: {result}")