炳臣 level
获赞
3
粉丝
4
关注
4
看过 TA
14
江苏师范大学
2016
Java
IP属地:浙江
暂未填写个人简介
私信
关注
2022-02-11 15:56
江苏师范大学 Java
zyh_:刚好刷到了,提供一个比较笨重的办法: 这里我把这个问题转化成背包问题。设多维数组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次幂
投递阿里巴巴集团等公司7个岗位
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务