我正在尝试制作一个功能,选择在某种情况下应该使用哪些硬币:
-
各种硬币:
硬币价值1 硬币价值0.33 硬币价值0.11-
每枚硬币的数量应该是有限的,所以在这个功能中你应该能够宣告使用了多少枚硬币和哪种硬币。 Fractaly已经回答了这个问题部分,我只是不知道如何实现一个也可以查看硬币数量的系统。帮助是很多!
提前致谢!
答案 0 :(得分:1)
由于您的硬币是彼此的整数倍,您可以简单地采取贪婪的方法,首先选择最大的硬币。因此,例如,对于3.44,您将选择3个值为1的硬币,(3/1向下舍入= 3)。剩余部分(3.44 - 3 = 0.44)仍需要较小的硬币。以相同的方式(0.44 / 0.33 = 1,余数0.11)然后(0.11 / 0.11 = 1)找到较小的面额。在javascript中:
var denominations = [1, 0.33, 0.11]; // must be sorted
var targetQuatity = 3.44;
pickCoins(denominations, targetQuantity);
function pickCoins(denominations, targetQuantity) {
var remainder = targetQuantity;
var coinsPicked = {};
for (var i = 0; i < denominations.length; i++) {
var denomination = denominations[i];
coinsPicked[denomination] = Math.floor(remainder / denomination);
remainder -= coinsPicked[denomination] * denomination;
}
return coinsPicked;
}