阿里笔试题-最优优惠计算问题

有商品A,B,C,商品A优惠10元,商品AB,优惠30元,商品BC优惠40元,现购买5件商品A,6件商品B,3件商品C,计算最优优惠金额

遇到了一个阿里面试题,求大佬解答
全部评论
刚好刷到了,提供一个比较笨重的办法: 这里我把这个问题转化成背包问题。设多维数组dp[A][B][C],dp[i][j][k]表达在购买i件A,j件B,和k件C的情况下所能达到的最优优惠金额,最优解问题,那么数组dp初始化为0即可。依题有5种商品可以选择:A,B,C,AB,BC。B和C的优惠金额都是0元,因此可以忽略。 dp[i][j][k]如何得到呢?依次考虑A,AB,BC这三件商品即可,比如先考虑A,A最多买i件,那么依次考虑买0,1,2,...i件A,即dp[i][j][k]=max(dp[i][j][k], dp[i-x][j][k] + 10*x),这里A的购买件数是x,x从0遍历到i即可。A考虑完之后再考虑AB,AB最多购买min(i,j)件,且在购买x件AB的情况下,dp[i][j][k]=max(dp[i][j][k], dp[i-x][j-x][k] + 30*x), 方法一样,最后再考虑BC即可。 将ijk的值分别遍历到想要的数值,最后就能得到答案。 时间复杂度好像是n的4次幂
1 回复 分享
发布于 2022-02-11 20:59
从C入手
1 回复 分享
发布于 2022-02-11 16:05
{"pureText":"","imgs":[{"alt":"discuss_164****116094.jpeg","height":2560,"localSrc":"content://media/external/images/media/104921","src":"https://uploadfiles.nowcoder.com/message_images/20220220/896273740_1645358117423/discuss_1645358116094.jpeg","width":1600}]}
点赞 回复 分享
发布于 2022-02-20 19:55
背包?
点赞 回复 分享
发布于 2022-02-17 01:31
要AB或BC组合买才有优惠吗,单独买B或C算优惠吗,如果算的话,B和C都优惠20元,那就是10*5+20*9=230元。如果不算就是凑最优惠的组合,先凑BC再凑AB,3个BC和3个AB最后两个A,好像还是40*3+30*3+2*10=230
点赞 回复 分享
发布于 2022-02-13 14:45
首先,我是菜狗。 其次,问下所谓优惠是买一件就对应优惠 吗?我觉得可以看成怎么凑,最终花的钱最少。 5(Pa-10)+3Pb+3(Pb+Pc-40) =5Pa+6Pb+3Pc-170, 5(Pa+Pb-30)+1(Pb+Pc-40)+2Pc=5Pa+6Pb+3Pc-190 不知道有帮助不,要是错了 就当我瞎写的 我是彩笔
点赞 回复 分享
发布于 2022-02-11 17:58

相关推荐

不愿透露姓名的神秘牛友
07-11 11:30
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
06-04 09:27
门头沟学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:31
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务