貪心算法——找零錢問題

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

 

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

相關文章
相關標籤/搜索