1、贪心法:每次操作都采取当前最优策略的算法。
2、正确使用贪心法:如果每次做出当前看来最好的选择,就能获得最好的结果,通常可以使用贪心法。也就是局部最优会导致全局最优。
3、例题
【最少硬币问题】某人带着3种面值的硬币去购物,有1
元、2
元、5
元的,硬币数量不限;他需要刚好支付m
元,问怎么支付,才能使硬币数量最少?
int m;
cin >> m;
int ans = 0;
while(m>=5) //能用最大面值则用最大面值硬币
{
ans++;
m=m-5;
}
while(m>=2) //能用第二大面值则用第二大面值硬币
{
ans++;
m=m-2;
}
while(m>=1) //最后才用面值最小的1元硬币
{
ans++;
m=m-1;
}
cout << ans;