貪心算法——找零錢問題


//貪心算法
//有三種硬幣: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);  
        }  

}

 

注:貪心算法是一種比較簡單的算法。貪心算法總是會選擇當下的最優解,而不去考慮這一次的選擇會不會對未來的選擇造成影響。(以尋找優質解為手段,從而達成整體解決方案的算法)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM