最近我遇到了一个单词问题,我必须编写一个程序,用户输入产品的数量,并找到用户可以购买该产品数量的最便宜的方式。价值如下:产品1是24包,售价109美元,产品2是12包,售价55美元,产品3是4包,售价19美元,产品4是1包,售价5美元。该程序应告诉用户购买产品的最便宜方式。
答案 0 :(得分:0)
好的,如果这是您需要的解释。
你想先计算出每单位的平均价格,这意味着要花109美元/ 24美元,55美元/ 12美元和19美元/ 4美元。这应该为每个单元提供不同的值。
下一步假设您想购买x单位,您需要取x并找到成本最低的包,看看x是否大于该值。因此,例如,如果x是21,那么24pack将不是一个选项。在这里编辑,你的问题没有说明,但如果x是23并且24包比其他任何组合便宜,你会被允许购买24包吗?如果是这样的话,对于第4阶段,你总是考虑选择更大的包,看它是否更便宜,你需要在那里增加一个额外的决定。
如果x大于最便宜的包,则需要执行x mod包大小。 mod代表模数除法。
如果x不大于最便宜的包,则需要采用下一个最便宜的包大小,看看x是否大于它。
你继续来回循环第3步和第4步,直到没有更小的选项(除非你碰巧单独出售它们,在这种情况下,你会使用它)。
最后你加起来所有的包*套餐价格
=============================================== ==========
方法2,您可以考虑组合问题,您的目标是组合任意数量的24,12,4包并将它们组合成您想要的单位x。然后找出哪一个最便宜。有趣的是,如果你允许购买更多,那么你需要(因为它更便宜),你需要为生成的组合添加一组组合并比较它们的价格。例如,如果x为35,则您希望运行48(24 * 2),36(3 * 12)以及35的可能组合。