其他分享
首页 > 其他分享> > 1块、4块、5块,求总数n块的最小硬币数(两种解法)

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