编辑代码

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}")