1. 程式人生 > >找零錢——貪心

找零錢——貪心

bsp min 要求 不能 替換 spa font 枚舉 是否

找零錢
? 有 100 元、50 元、20 元、10 元、5 元和 1 元這些面值的錢
? 求湊出 ?? 元的最多張數和最少張數,要求第 ?? 種面值的錢不能用
超過 ???? 張
? 多組詢問,?? ≤ 10^5, ????, ?? ≤ 10^9

題解:

其實我們只要知道最少張數即可。

最大=湊出∑ai-x的最小方案數。max=n-min

發現,如果沒有20,那麽剩下的100/50/10/5/1成倍數關系可以直接貪心

如果有了20怎麽辦?

那麽,20能用幾張呢?

是否可以被50替換呢?

50*2=20*5

所以,如果最終的方案中,用了至少5張20,還剩下至少兩張50,那麽這一定不是最優的

所以,最終的方案必須滿足如下的兩個特性之一:

1.用的20<5

2.剩的50<2

可以2*5=10次枚舉。

20和50的張數已經確定的話,直接貪心選擇100/10/1即可。

找零錢——貪心