Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将给定金额的钱换成钞票_Javascript_Function_Coin Change - Fatal编程技术网

Javascript 将给定金额的钱换成钞票

Javascript 将给定金额的钱换成钞票,javascript,function,coin-change,Javascript,Function,Coin Change,将给定的金额更改为最小数量的票据 投入: 金额:正整数; 票据:不同正整数的排序列表(例如[1,5,10]) 假设: 金额不超过100。 最多4个票据价值 如果金额无法更改,则必须返回0 示例: 金额:17,账单:[1,5,10],回答:4->10+5+1+1 金额:17,账单:[2,4],答案:0 这是我目前掌握的代码 函数排序(数组){ 对于(var i=array.length-1;i>=0;i--){ 对于(var j=0;j数组[j]){ var z=数组[j]; 数组[j]=数组[

将给定的金额更改为最小数量的票据

投入: 金额:正整数; 票据:不同正整数的排序列表(例如[1,5,10])

假设: 金额不超过100。 最多4个票据价值

如果金额无法更改,则必须返回0

示例: 金额:17,账单:[1,5,10],回答:4->10+5+1+1 金额:17,账单:[2,4],答案:0

这是我目前掌握的代码

函数排序(数组){
对于(var i=array.length-1;i>=0;i--){
对于(var j=0;j数组[j]){
var z=数组[j];
数组[j]=数组[j+1];
数组[j+1]=z;
}
}
}
返回数组;
}
功能变更(金额、票据){
分拣(票据);
var结果=[];
而(金额>0){
对于(变量i=0;i=票据[i]){
金额-=票据[i];
结果:推送(法案[i]);
我--;
}
}
}
返回result.length;
}
log(更改(17[1,5,10]);//期望值:4
console.log(更改(17[2,4]);//期望值:0
console.log(更改(18[2,4]);//预期:5

//console.log(更改(17[3,5]);//期望:5如果修复了您的更改功能并添加了注释来解释我的更改,请告诉我您是否有任何疑问

function change (amount, bills) {
    //Asign sorted array of bills to possibleBills
    var possibleBills = sort(bills);

    var result = [];

    //Asign amount to currentAmount
    var currentAmount = amount;

    //Sort through possibleBills
    for (var i = 0; i < possibleBills.length; i++) {
        //Perform action inside while loop if the current bill value can be substracted from currentAmount
        while (currentAmount - possibleBills[i] >= 0) {

            currentAmount -= possibleBills[i];
            result.push(possibleBills[i]);

            //End loop and return the length of result if currentAmount reaches 0
            if (currentAmount === 0) {
                return result.length;
            }
        }
    }

    //Return 0 if the amount couldn't be changed with the given bills
    if (currentAmount > 0) {
        return 0;
    }


    return result.length;
};
功能更改(金额、票据){
//将已排序的票据数组指定为可能的票据
var possibleBills=排序(票据);
var结果=[];
//从指定金额到当前金额
var currentAmount=金额;
//对可能的垃圾进行分类
对于(变量i=0;i=0){
当前金额-=可能的利息[i];
结果:推送(可能的边界[i]);
//结束循环,如果currentAmount达到0,则返回结果的长度
如果(currentAmount==0){
返回result.length;
}
}
}
//如果无法使用给定的票据更改金额,则返回0
如果(当前金额>0){
返回0;
}
返回result.length;
};

它比我的更好,但仍然存在上一个的问题。对于17,[3,5],它返回0,就好像它不能这样做一样,但是通过在代码中获取4个3和15个元素,它是可能的,应该解释代码为什么要这样做。如果你真的读了我写的东西,而不只是愤怒的评论,那么当代码更好地解释自己的时候,看到人们到处放评论来解释代码正在做的事情,真的很烦人。你会注意到我是一个新手。拉比很好地把这件事考虑进去,并加了一些评论,以便我理解他在做什么。它帮助了我,我不知道你为什么对它生气。@Mendal我很高兴我能帮上忙。对不起,我不知道你怎么才能修好最后一个