这个视频涵盖了实现找零最小硬币数的过程。
https://en.wikipedia.org/wiki/Change-making_problem
我不是很清楚的问题在于面试官详细介绍了优化的细节,从这里开始。
https://youtu.be/HWW-jA6YjHk?t=1875
他建议为了得到最小数量的硬币,使用面值为[25,10,1]的方法只需要对50美分以上的找零用算法进行计算,之后我们就能安全地使用25美分。所以如果数额是100.10美元,我们可以一直使用25美分,直到遇到50美分时,此时我们需要使用算法计算精确值。
这对于给定[25,10,1]面值列表是有意义的。要获得他建议的断点数字,可以使用这种情况下的面值的最小公倍数(LCM),即50。
For example
32 - 25 * 1 + 1 * 7 = 8 coins. But with 10 cents we can do
32 - 10 * 3 + 1 * 2 = 5 coins.
因此,我们不能假设 25 美分将被包括在最小硬币数量计算中。
这是我的问题:
假设我们有面额 [25, 10, 5, 1],它们的最小公倍数仍为 50。但对于任何超过 25 美分且没有包括 25 美分的数量,都不存在最小解。
例如 -
32 - 25 * 1 + 5 * 1 + 1 * 2 = 4 coins.
32 - 10 * 3 + 1 * 2 = 5 coins
那么在这种情况下,断点不应该是最小公倍数,而应该是25美分,对吗?感谢您的回答。