1块、4块、5块,求总数n块的最小硬币数(两种解法)
作者:互联网
// 暴力破解
function getNum1(N){
let n1 = 1;
let n2 = 4;
let n3 = 5;
let last=N;
for(let i=0;i<=N;i++){
for(let j=0;j<=N/4;j++){
for(let k=0;k<=N/5;k++){
if(n1*i+n2*j+n3*k===N){
if(i+j+k<last){
last = i+j+k;
}
}
}
}
}
return last;
}
// 数字过大会卡死
console.log(getNum1(1123))
// 直接除以五 由余数考虑新的算法
function getNum2(n){
if(n % 5 === 0){
return n/5
}else if(n % 5 === 1){
return parseInt(n/5) + 1/1
}else if(n % 5 === 2){
return parseInt(n/5) - 2 + 12/4
}else if(n % 5 === 3){
return parseInt(n/5) - 1 + 8/4
}else if(n % 5 === 4){
return parseInt(n/5) + 4/4
}
//1,2,3,4,5 后面基本可以写成 parseInt(n/5) + 1
}
console.log(getNum2(1123))
标签:return,硬币,1123,最小,else,let,parseInt,last,解法 来源: https://blog.csdn.net/followYouHreat/article/details/112608782