找到添加到充值卡中的最低金额,以便卡上的余额可以完全用完。在数学上,它类似于this。
起始号码 - 卡上留下的金额。
价格集 - 可以从卡中扣除的单个价格集。
最低充值 - 您可以添加到卡中的最低金额。
最小增量 - 你只能以25p的增量加满(例如£5.25而不是5.10英镑)
我住在一个公寓大楼里。每个人都必须使用洗衣房,由一家名为Circuit的公司管理。他们有一个非常复杂的充值系统,每年从搬出的人那里赚到数千英镑,在他们的卡上留下少量的钱。我想制作一个算法,可以准确地告诉你要添加到你的卡中多少钱来完全归零。
我编写的算法可以做到这一点,但只适用于一个“项目”。它会告诉你添加足够的8个低质量的洗涤剂,例如,可以增加购买3个中等质量的洗涤剂和2个干洗剂。
我或许应该补充一点,这主要是学术活动;为了好玩。
您可以在此处查看我在C ++中的暂定实现: https://github.com/SilverSkyes/F__kYouCircuit/blob/master/F__kYouCircuit/main.cpp
答案 0 :(得分:1)
您描述的问题通常是一个非常棘手的问题,因为它与knapsack problem有关。但是,如果您在卡上支付非常大的金钱和很多不同的价格,那就很难了。
对于你的现实世界问题,只有很少的不同价格,你可以通过完整的枚举解决这个问题:说你有一个固定的上升量c和价格p_1 $,...,p_n创建深度为n的嵌套循环,如此
<table>
<tr>
<td>David<td>
<td>John<td>
<td>Brian<td>
</tr>
<tr>
<td>Emily<td>
<td>Donald<td>
</tr>
</table>