2008-04-15 Ruby 测试题(00012)

2008-04-15 Ruby 测试题(00012)

人民币按面值有(1毛,5毛,1元,5元,10元,20元,50元,100元)共8种;
现在需要支付100元钱,问总共有多少种支付组合?
比如,10个10元就是一种,2个50元又是另一种,甚至1000个1毛也是一种。
哈~PE 31的中国版,以前还有2元面值的,貌似现在和20元一起都已经退出历史舞台了。

本帖隐藏的内容需要回复才可以浏览
最古老的办法。
我就不贴出来了!
看下你的
太慢啦 太慢啦。。。 数西瓜的办法太笨了。·~~~~
本帖隐藏的内容需要回复才可以浏览
400189,正解
已经出现了递归算法,穷举算法,我来添上回溯。
穷举是思路最简洁的,不要说写N多循环很累,程序运行时间很长。如果你对算法不是很了解,又处在一个特殊的工作地位,比如可以慢但不允许出错,或者时间紧要交货,那时候,适当的穷举,多重循环是可以考虑的方法。
递归是代码最简洁的,但是在没有递归思路的人看来,这个代码是天书,而且递归的效率问题往往要交给编译器去完成。
回溯是自寻烦恼的,简单的思想,复杂的代码,还需要做适当的测试,编写过程中搞不好就死循环去了。
我认为程序没有最好的,只有最恰当的。能掌握多少种方法就掌握多少种方法,总会有用武那一天的。

[Copy to clipboard] [ - ]
其实如果能真的理解编程思想的话,简单的程序是不需要注释的。
加上注释,希望大家能看懂。楼上说的没错,递归难在对递归思想的理解~~

本帖隐藏的内容需要回复才可以浏览
学习一下bbschat的解法.

我做的原始的版本

[Copy to clipboard] [ - ]


[Copy to clipboard] [ - ]
都是高手啊,我要好好学习一下了...