Javascript 需要帮助解决练习吗

Javascript 需要帮助解决练习吗,javascript,Javascript,我有一项作业,内容如下: 您应该创建一个包含所有可能的令牌值的数组,而不是10个单独的独立变量。然后迭代数组,从最高数字到最低数字,从每次迭代的输入中尽可能多地减去该标记值: 常量inputNum=numbercompt'Num',58; 设num=inputNum; 常量标记值=[20,10,5,2,1]; 常量输出=标记值 .mapvalue=>{ //计算出适合于'num'的'value'的最大数目` 常量计数=Math.floornum/值; num-=计数*值; 返回标记${valu

我有一项作业,内容如下:


您应该创建一个包含所有可能的令牌值的数组,而不是10个单独的独立变量。然后迭代数组,从最高数字到最低数字,从每次迭代的输入中尽可能多地减去该标记值:

常量inputNum=numbercompt'Num',58; 设num=inputNum; 常量标记值=[20,10,5,2,1]; 常量输出=标记值 .mapvalue=>{ //计算出适合于'num'的'value'的最大数目` 常量计数=Math.floornum/值; num-=计数*值; 返回标记${value}的`${count}`; } 。加入“\n”;
console.loginputNum+':\n\n'+输出 您应该创建一个包含所有可能的令牌值的数组,而不是10个单独的独立变量。然后迭代数组,从最高数字到最低数字,从每次迭代的输入中尽可能多地减去该标记值:

常量inputNum=numbercompt'Num',58; 设num=inputNum; 常量标记值=[20,10,5,2,1]; 常量输出=标记值 .mapvalue=>{ //计算出适合于'num'的'value'的最大数目` 常量计数=Math.floornum/值; num-=计数*值; 返回标记${value}的`${count}`; } 。加入“\n”; console.loginputNum+':\n\n'+输出 试试这个:

let userInp=53;
function calc(){
    var t1 = Math.floor(userInp/token20);
    userInp= userInp-(t1*token20);
    var t2 = Math.floor(userInp/token10);
    userInp= userInp-(t2*token10);
    var t3 = Math.floor(userInp/token5);
    userInp= userInp-(t3*token5);
    var t4 = Math.floor(userInp/token2);
    userInp= userInp-(t4*token2);
    var t5 = userInp;
    console.log(t1+','+t2+','+t3+','+t4+','+t5);
};
calc();
希望您能大致了解如何解决此问题。

尝试以下方法:

let userInp=53;
function calc(){
    var t1 = Math.floor(userInp/token20);
    userInp= userInp-(t1*token20);
    var t2 = Math.floor(userInp/token10);
    userInp= userInp-(t2*token10);
    var t3 = Math.floor(userInp/token5);
    userInp= userInp-(t3*token5);
    var t4 = Math.floor(userInp/token2);
    userInp= userInp-(t4*token2);
    var t5 = userInp;
    console.log(t1+','+t2+','+t3+','+t4+','+t5);
};
calc();

希望您能大致了解如何解决此问题。

让我们将问题分解为几个部分

首先,我们正好有1枚硬币,计数为0-1:

0 [] 1 [1] 不出意外,我们只是看看问题是如何构成的。我们有一个硬币集合,一个要考虑的范围,以及一组最小的硬币来实现每个计数。 硬币为[2,1]且计数为0-5的情况:

0 [] 1 [1] 2 [2] 3[2,1]而非[1,1,1] 4 [2,2] 5 [2,2,1] 请注意,到目前为止,我们使用贪婪的方法,只使用最大的硬币来做好事

反例:有没有这样的情况

硬币:[5,4,2,1]范围:仅8枚

8[4,4]不是[5,2,1] 原因是8% 5=3,我们在这个值和起始值5之间有一个硬币,所以我们有两个要考虑的因素。1x5+minCoins3与1x4+minCoins4

如果每枚硬币的价值增长>=100%,我们就不会有这个问题。就你而言:

1-2:100% 2-5: 150% 5-10: 100% 10-20:100%


现在,我们应该满足于只消耗最大的硬币。

让我们将问题分解为几个部分

首先,我们正好有1枚硬币,计数为0-1:

0 [] 1 [1] 不出意外,我们只是看看问题是如何构成的。我们有一个硬币集合,一个要考虑的范围,以及一组最小的硬币来实现每个计数。 硬币为[2,1]且计数为0-5的情况:

0 [] 1 [1] 2 [2] 3[2,1]而非[1,1,1] 4 [2,2] 5 [2,2,1] 请注意,到目前为止,我们使用贪婪的方法,只使用最大的硬币来做好事

反例:有没有这样的情况

硬币:[5,4,2,1]范围:仅8枚

8[4,4]不是[5,2,1] 原因是8% 5=3,我们在这个值和起始值5之间有一个硬币,所以我们有两个要考虑的因素。1x5+minCoins3与1x4+minCoins4

如果每枚硬币的价值增长>=100%,我们就不会有这个问题。就你而言:

1-2:100% 2-5: 150% 5-10: 100% 10-20:100%

现在,我们应该满足于只消耗最大的硬币。

A可以解决这个问题,至少对于给定的代币集。你会在网上找到解决办法。这也被称为硬币兑换问题。A可以解决这个问题,至少对于给定的代币集。你会在网上找到解决办法。这也被称为硬币兑换问题。
let userInp=53;
function calc(){
    var t1 = Math.floor(userInp/token20);
    userInp= userInp-(t1*token20);
    var t2 = Math.floor(userInp/token10);
    userInp= userInp-(t2*token10);
    var t3 = Math.floor(userInp/token5);
    userInp= userInp-(t3*token5);
    var t4 = Math.floor(userInp/token2);
    userInp= userInp-(t4*token2);
    var t5 = userInp;
    console.log(t1+','+t2+','+t3+','+t4+','+t5);
};
calc();