贪心算法——找零钱问题

//贪心算法
//有三种硬币:10,5,1;给定num元,以最少的硬币数来换它
function greedy(num){
var n10=0, n5=0, n1=0;
if(num>=10){
n10= Math.floor(num/10);
num= num%10;
}
if(num>=5){
n5= Math.floor(num/5);
num= num%5;
}
if(num<5){
n1= num;
}
console.log('10元:'+n10+'枚 5元:' + n5+ '枚 1元:'+n1+ '枚');
}

 

递归方法如下:

function f(num,n10,n5,n1){
    var n10 = n10 || 0, n5 = n5 || 0, n1 = n1 || 0;
    if(num==0)  
        {  
            console.log("10元:"+n10+"---5元:"+n5+"---1元:"+n1);  
            return;  
        }  
          
        if(num>=10)  
        {  
            f(num-10,n10+1,n5,n1);  
        }  
        else if(num>=5&&num<10)  
        {  
              
            f(num-5,n10,n5+1,n1);  
        }  
        else if(num<5&&num>=1)  
        {  
            f(num-1,n10,n5,n1+1);  
        }  

}

 

注:贪心算法是一种比较简单的算法。贪心算法总是会选择当下的最优解,而不去考虑这一次的选择会不会对未来的选择造成影响。(以寻找优质解为手段,从而达成整体解决方案的算法)

posted @ 2018-03-09 14:50  阿力瓦  阅读(5376)  评论(0编辑  收藏  举报