体验ruby的魔幻语法
题目是找零钱,假设我们需要找给别人39美元元的零钱,
那么结果将会是(美元的硬币有25,10,5,1这种):
那么结果将会是(美元的硬币有25,10,5,1这种):
用Ruby来解决,只需要两行即可,
1
def make_change(amount, coins = [])
2
coins.sort! { |x,y| y <=> x }
3
4
return coins.map!{|coin| f = amount/coin; amount %= coin;Array.new(f){coin} }.flatten
5
end
6
7
p make_change(39,[10,1,5,25])
def make_change(amount, coins = [])2
coins.sort! { |x,y| y <=> x }3

4
return coins.map!{|coin| f = amount/coin; amount %= coin;Array.new(f){coin} }.flatten5
end6

7
p make_change(39,[10,1,5,25])
这里采用贪心算法,每次总是用最大的硬币去整除,然后将余下的钱用下一个硬币进行同样运算。
一句话包含了ruby许多很有特点的语法,是我见到过最灵活敏捷的语言。
