假如有一张使用条件是满X元的优惠券,比如满1000减100,一共有n个商品可以选择,设计一个算法,计算使用这张优惠券所需要的最小代价。(每种商品只能购买一件)
输入:
目标金额 商品个数 商品价格列表(多个商品)
输出:
凑单后总价
样例输入:
1000 4 430 550 440 555
样例输出:
1105
编程思路:
1.再价格列表中,先找出单价大于等于目标价格的商品,存到某个数组A中
2.将价格小于目标价格的商品进行排列组合,并计算出每种组合的价格,将这些价格存到上面的数组A中
3.结果就是A数组中的最小值
python代码如下:
#coding:utf-8
import copy
import sys
# 返回从列表l中选取n个元素的所有组合结果
def combine(l, n):
a = [0]*len(l)
res = []
for i in range(n):
a[i] = 1 # 初始化一个长度与l相同的list,前n个元素置为1
if n == len(l):
res.append(copy.deepcopy(a))
else:
res.append(copy.deepcopy(a))
isEnd = False
while not isEnd:
leftTotal = 0
for i in range(len(l)-1):