要改进这两种算法,都是一个目标,就是寻找不需要列出所有解的办法来。
前一种算法,是求出所有的可能解,然后再找其中的最优解。要进行优化,则可以将求解与求优合二为一。在每一个递归中,都寻找最优解。比如,make_change(14,[10,7,2]),我们就可以寻找14-10后剩余的4的最优解,得到[2,2],以及14-7后剩余的7的最优解,得到[7],最后是14-2后剩余的12的最优解,得到[10,2]。然后选择其中最短的一个[7],组合为[7,7]作为结果返回。
代码如下:
def make_change(amount, coins = [25, 10, 5, 1])&nbs ...
接着上回的讨论,我们需要写两个方法,一个找出所有的零钱组合,get_all_change_list。另一个从中再找出符合要求的一个解。
找出符合要求的解,比较简单,先写在下面。
def get_best_change(change_list)
best_change=nil
min_length=100000
change_list.each do |list|
if list.length<min_length
...
先把题目再抄一遍:
这周的题目是找零钱,假设我们需要找给别人39美分的零钱,那么结果将会是(美元的硬币有25,10,5,1这种):
>>make_change(39)
=>[25, 10, 1, 1, 1, 1]
假设我们的硬币种类有10,7,1,那么找14美分的零钱结果将会是:
>>make_change(14, [10, 7, 1])
=>[7, 7]
这次的每周一测就是完成该方法:
def ...
自从Quake Wang在JavaEye贴出第一个Ruby每周一测之后,我就一直非常的感兴趣。不只是对题目本身很感兴趣,更觉得这是一个非常好的技术写作的架子,可以有很多个深入探索的方向。
首先是解题思路本身,就值得讲一个又一个有趣的故事。再联系到具体的语言实现,不同的语言各有巧妙不同,又值得大书特书。再有就是效率的提升,巧妙的实现是一个方面,性能的提升,则是另一个非常重要的领域。再加上举一反三,融会贯通,可以借此做语言比较,也可以借此谈语法设计的优劣,总之,每一个Quiz,都可以挖一个大坑,慢慢展开。
所以,我的手一直很痒,想拿这样的题目来下手,但是,另一方 ...
DynamicStruct,是我最近自己在鼓捣的一个ruby项目,这是一个更大的计划的一部分。
当他完成之后,应该是这样的一个结构:
Aurum
|
V
RubyBCL
|
V
DynamicStruct
Aurum是目前徐昊正在做的一个项目,简单的介绍可以看这里:《A very brief introduction to Aurum》
通过aurum,可以更加方便的定义新的语言。
但是,仅仅依靠aurum,只能让新设计出来的语言,运行于aurum的解释环境中,ruby就已经是够慢的解释语言了,这样的解释执行方式,可以说完全无法得到具 ...
庄表伟 说:
我最近在整理自己的思路,怎么写出来,还没想好
徐X 说:
嘿嘿
你也好久没博了吧
庄表伟 说:
我还是在MSN里,先跟你说说,看看能不能理清楚一点
徐X 说:
好
庄表伟 说:
我以前写那个丧钟,当时是一鼓作气,想推翻OO中心论的思维模式
现在做的项目种类多了之后,就发现打错了目标了
现在我能够想清楚的,有三大块:
1、不同的软件系统所针对的问题域==>需要采取不同的分析问题的模式
2、不同的语言组合==>需要考虑不同的系统架构模式
3、不同的问题域、语言组合、人员情况==>需要考虑不同的开发管理模式
我当时的经验,其实只不 ...
以前没有学过ruby,这回练练手,用ruby写了一个“出数独题”的小程序。抛砖引玉,看看有没有解数独题的算法被引出来
Table=Array.new(9)
def getNumber(a)
return nil if a.length==0
sum=a.length*10
l=rand(sum)/10
return a[l]
end
def setTable(i,j)
if Table[i][j].class==Fixnum
0.upto(8) {|pos| Table[i][pos].delete(Table[i][j]) if ...
最近在玩“饭否”,结识了一位玩ruby的朋友nnnnon。他做了一个基于wxRuby的小软件,能够同时在Twitter和饭否发言,目前最新的版本是4.0。(个人认为叫0.4比较妥当)下载地址:http://users3.nofeehost.com/nnnnon/Rupdate-version4.0.rar
于是我就产生了广泛的联想,现在的Web2.0网站,已经越来越多的支持开放API,比如Google Maps,比如RSS,比如Flickr/Yupoo,比如Twitter/Fanfou。于此同时,Mashup的技术也应运而生。
现在nnnnon做的这个 ...
与T1聊天的简单记录。
起初,上帝创造了Internet,他告诉程序员,这协议里的一切,你们都可以用,唯有那树上的小甜饼(Cookie),你们不要去吃。吃了必死。
上帝认为,服务器端应该是始终无状态的,这样才能保持性能,分布性,可靠性。但是,Web的发展,越来越超出上帝的预料,从Cookie到Session,服务器端记录了越来越多状态。这些都是违背HTTP/URI/WWW的很多协议设计的本意的。
所以,Fielding主教出来说,你们要回归原始教旨,这样才能符合当初设计Internet的本意。
REST,简单的说,就是表现状态的迁移,
表现,不那么学术的说,就是HTTP协议中 ...
很早就知道InfoQ China的消息,一方面是通过gigix的签名档,“InfoQ China coming soon”这个标题在他的gtalk上挂了好久。后来又在javaeye的年会上遇到北京来的Jason,再后来,《程序员》杂志一直和我联系的霍泰稳也 去了InfoQ China。再后来,他们的网站beta版上线,我也是第一时间订了RSS,一直看到现在。
很早就答应泰稳,要帮他宣传宣传,但是却一直没有做任何宣传,连一篇blog都没有写过。
前几天,他又发了一封email给我,先全文黏贴如下:
这是一封来自InfoQ中文站(http://ww ...
网游是一个可怕的东西,我从来不敢沾这种玩意,我相信,这东西一旦沉迷就完蛋了。
但是,前两天,我因为订阅duduwolf的RSS,所以看到了他收藏的一个del.icio.us网址。
XPairtise - Pair Programming for Eclipse
XPairtise为分布结对编程提供了一个平台。该插件提供共享编辑,项目同步,共享程序和测试执行,用户管理,内置对话交流和一个共享白板。
正好最近在InfoQ China看到一篇KentBeck的访谈,其中一段话,令我很感兴趣:
与此同时,在我现在参与的许多项目中,我将很多时间花在利用付费客户端进行远程结对编程 ...
- 浏览: 678963 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
匪夷所思
共 19 张
共 19 张
最近加入圈子
最新评论
-
《Dreaming in Code》似乎 ...
看了第0章,写的挺有意思的。
-- by weiqingfei -
关注软件开发项目中的人[ ...
呵呵!正在踏入项目管理中,LZ的文章很让我受用,希望以后能常向楼主请教!!
-- by kayzhan -
我成了CSDN的活雷锋!
真实的感觉是 csdn 有点像 广告网站
-- by modun -
我成了CSDN的活雷锋!
至于利益,我想现在这个社会不用像孔孟一样跟梁惠王说“大王何以言利”这样的一句彪炳 ...
-- by seemoon -
我成了CSDN的活雷锋!
为啥总有扒坟的?
-- by youcai






评论排行榜