def combination_sum(amount, prices): prices.sort # 排序以便按顺序选择,避免重复组合 result = def backtrack(start, target, path): if target == 0: result.append(path.copy) return for i in range(start, len(prices)): if prices[i] > target: continue path.append(prices[i]) backtrack(i, target - prices[i], path) # 允许重复选择,所以从i开始 path.pop backtrack(0, amount, ) return result# 读取输入amount = int(input)price_str = input.strip# 处理price列表,去掉方括号和逗号prices = list(map(int, price_str[1:-1].split(',')))# 计算组合combinations = combination_sum(amount, prices)# 输出结果print(combinations)摘要:def combination_sum(amount, prices): prices.sort # 排序以便按顺序选择,避免重复组合 result = def backtrack(start, target, path): if target == 0: r
来源:纵横江湖