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))
上一篇:如何在JavaScript中将base字符串转换为integer?


下一篇:JavaScript练习 设置字体初始值大小和颜色为默认值,每秒钟字体增大5个像素,颜色变换一次 ,增大6次后开始缩小,缩小6次后再次增大