优惠券组合小例子

优惠券组合小例子

优惠券的使用贯穿于我们生活的日常。"美团外卖"和"饿了么"成为大学时代的难忘记忆!如何精准凑单是门技术活,如何精准凑单以让自己获得最大满减优惠是众多小伙伴的一大需求。本文以一个小例子来实现对凑单这一场景的再现。
input1:点选的n道菜肴对应的单价列表quotion=[v1,v2,v3,…,vn];
input2:满减的优惠券额度man_N_jian;
output:最优的凑单匹配选项对应价格
为实现代码的简便,默认list中元素位置与菜肴名称一一对应。
算法时间复杂度:O(2^n)。
空间复杂度:O(n*2^n)。

  • 算法思想:
  1. 价格列表quotion中存在man_N_jian额度,直接返回man_N_jian表示True
  2. 选择每一道菜肴本身是一个0-1整数规划,那么使用n个0或1的组合序列(falgArray)来与对应菜肴单价相乘加即可获得一个和数total,即: total =vi*falgArray[i],i=1,2,…n。如果和数total能先落在区间[man_N_jian, man_N_jian+5]内,然后计算delta=abs(total-man_N_jian),并保留当前的最小值-----min1,历史的最小值-----min2。将每一轮计算的三元组(total, falgArray,min2)存入list中以备最后找出最小差值对应的菜肴组合序列。
  • 代码
#本质上就是一个0-1整数规划
#简易菜单
#quotion={'红烧牛肉':15, '红烧鱼':11, '可乐鸡翅':2, '牛肉':8,'北京烤鸭&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值