贪心算法——找零钱问题
//贪心算法 //有三种硬币: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); } }
注:贪心算法是一种比较简单的算法。贪心算法总是会选择当下的最优解,而不去考虑这一次的选择会不会对未来的选择造成影响。(以寻找优质解为手段,从而达成整体解决方案的算法)