阿里巴巴模拟题目

小明是一个爱吃零食的小伙子,平时会在网上购买各种好吃的零食。一天,小明了解到,在天猫超市上购买不同种类的零食,会有各种各样的优惠活动,如:满99减50,满188减100,满288减150等等,每种零食只参与其中一种优惠活动方式,还包邮哦,但也有条件,就是每种零食只限购一份。小明看了非常心动,原来天猫超市上购买零食会这么划算,可以节省很多钱,真的太好了。心动不如行动,小明马上列出了所有参与活动的零食种类和其价格,以及每种零食种类参与的优惠活动方式,小明也看了看自己支付宝里面的余额为M(正整数)元,用于天猫超市上的购物支付。但是小明烦恼也来了,左算右算,也算不出怎样选择零食的组合才能使自己买到的零食总和价值最大,聪明的你帮帮小明算算,在最后支付时(优惠后)的总金额不大于M的前提下,小明最多可以买到零食的价值总和N。

输入数据包括:

(1)优惠活动:满减金额条件和其满减金额(小于或等于5种优惠活动);

(2)每种零食的价格和其参加的优惠活动(小于30种零食);

(3)小明支付宝余额M

输出:小明最多可以买到零食的价值总和N
#阿里巴巴#
全部评论
sale[i]表示第i种折扣需要凑够的最少的钱,a[i,j]表示某商品的数量,b[i,j]表示某商品的价格属于第i种商品的价格 针对每种折扣都满足下列约束条件: min(a[i,1]*b[i,1]+b[i,2]*b[i,2]+...a[i,k]*b[i,k])>sale[i] 要求一个a[]的组合使得满足折扣sale[i]条件下花的最小的钱cost[i] (怎么解决?多重循环时间复杂度态度,难不成用同余定理?) 得到剩余的钱=累加cost[i]-累加slae[i]的折扣 最后用剩余的钱尽量多的买东西(这个简单)
点赞 回复 分享
发布于 2017-08-21 21:04
看起来像是01背包问题,估计用动态规划可以算
点赞 回复 分享
发布于 2017-08-21 20:25
贪心吗?
点赞 回复 分享
发布于 2017-08-21 20:06

相关推荐

03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸👑:测试也难求一面 逆天
点赞 评论 收藏
分享
季桑陌:这怎么看是不是外包啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务