硬币选择器功能,返回哪些硬币和需要什么样的硬币才能产生一定的金额

时间:2016-06-25 21:27:15

标签: javascript

我正在尝试制作一个功能,选择在某种情况下应该使用哪些硬币:

-

各种硬币:

硬币价值1

硬币价值0.33

硬币价值0.11

-

每枚硬币的数量应该是有限的,所以在这个功能中你应该能够宣告使用了多少枚硬币和哪种硬币。 Fractaly已经回答了这个问题部分,我只是不知道如何实现一个也可以查看硬币数量的系统。帮助是很多

提前致谢!

1 个答案:

答案 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;
}