|
|
最新发表博客
-
|
http://www.baidu.com/s?bs=%BD%E1%BB%E9%C2%BC%CF%F1%BA%CD%CF%E0%B2%E1%BC%AF&f=8&wd=%CE%D2%BA%CD%CB%FB%B5%C4%BD%E1%BB%E9%C2%BC%CF%F1%BA%CD%CF%E0%B2%E1%BC%AF 而且这个“结婚录像和相册集”还在传播中, 刚刚看到 Tao Mei 同学也在 他的space 中加上了。 我要先感谢国家,然后感谢不靠谱的设计,和广大好奇“结婚录像和相册集”的群众...
|
-
|
我朝的教育体系虽然时不时灌输“互相帮助”的精神,但是所有小考,中考,大考,无一不是考察个人独立作战的能力。你要互相帮助,不但违反考场纪律,而且其他同学的好成绩对你是一个直接的威胁。 在这种价值体系下产出的学生,合作精神如何? 善于合作,对自己是弊大于利么? 在清华大学 《现代软件工程》 课中,我安排同学们有尽量多的机会和别人合作: 1) 两人一组的结对项目 I (为期两周) 2) 两人一组的结对项目 II (为期两周) 3) 4~5 人一组的团队项目...
|
-
|
第三年讲这个课。 同学们除了完成个人项目,结对项目外,还完成了如下的团队项目: team 1 (最后评审第二名) 一个日程管理的小软件,名为Lifer,可以与Google Calendar同步的 Todo / Calendar / 便签管理工具。 team 2 (最后评审第五名) 评审时尚未发布软件。 Q三国杀 - 像所有的游戏软件一样,多次推迟后,发布了一个问题多多的版本,他们的总结提到: 什么功能产生的bug 最多,为什么? 规则部分的bug较多。这是因为三国杀本身的设计造成的,其规则比较凌乱复杂,难以用一个清晰的框架描述。比如说:...
|
-
|
Boyer-Moore算法——“坏后缀规则”? 如前贴所述,BM算法的“好后缀规则”实际上有两种情况:“中缀”和“前缀”。 “前缀”没啥问题,但是我发现“中缀”往往会出现“跳转以后朝向注定的失败匹配”,如下图所示: 如上图,在第6位X处发生了miss match,BM算法会跳转到3位,也就是将pat挪到如上表第三行的样子,再从11位开始比较,假设11~7都匹配成功了,但是X!=B,第6位是注定失败的。 那么可否将“中缀跳表”独立出来,匹配过程中判断”好后缀”加上它的前导字符构成的子串是否在pat中存在?如果不存在就是个“坏后缀”。...
|
-
|
编辑部搞的活动, 请大家帮个忙,来投票吧,看看《编程之美》第1章“游戏之乐——游戏中碰到的题目”大家最喜欢哪个题目,或者大家认为哪个题目最有趣。 可以选择以下任何网址参与投票: CSDN: http://vote.csdn.net/VotePost.aspx?voteid=6419 开心网: http://www.kaixin001.com/~vote/detail.php?vid=6324994&uid=57936198 QQ空间: http://user.qzone.qq.com/80754098/vote/1021116304...
|
-
|
Boyer-Moore算法 通过学习和借鉴之后,感觉这个算法思想挺精妙,同时也比较复杂。我根据自己的理解写了一个算法,望大家指教。 前面提到过,这个算法是从右往左匹配,根据“坏字符规则”和“好后缀规则”来跳转,避免无谓的比较。 坏字符规则 这个规则比较简单,首先看pat的末位是不是和要查找的文本匹配,如果不匹配,pat里面又没有这个字符,则可以完全跳过这个字符,如下图: 如果pat里面有这个字符,则跳到pat里面最右的这个字符(当然排除自己),如下图中pat的第二个T: 可见这个规则是在末位就不匹配的时候用的,如果已经匹配了几位了,这几位就是“好后缀”了。...
|
-
|
问题 《编程之美》有一道题目“最短摘要生成”:若输入“微软 亚洲研院 使命”三个关键字,查找最短的摘要: 微软 研究院的 使命 是使未来的 计算机 能够看、听、学,能用 自然语言 与 人类 进行交流。 ... 微软亚洲 工程院将以 微软亚洲 研究院的科研成果为依托,创造关键技术、为 微软亚洲 研究院核心技术的 孵化 提供有力保证。 ... 微软 亚 研院 的科研环境 编辑本段 回目录… 书中给出的解法是基于“分词”后的数组的。 那么,如果是客户端蜘蛛临时抓的网页,或者是在一堆文件中查找,这时候没有分词、没有建立倒排表,如何直接生成呢?再加上有中英文混杂的情况(查找某种表达的翻译)?...
|
-
|
( 第一 , 第二 , 第三部分 ) “ Coders at Work ”, 对15 位顶级程序员的采访, 总共600页。 看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选,面试程序员,优秀程序员的特点,和程序设计的句子。下面是 最后 3 个程序员的心得,和我的几句解释: Coder What they say about good programmer, interview, and design My interpretation Fran...
|
-
|
这是第三部分( 第一 , 第二部分 ),非常有意思的问答,值得仔细琢磨。 这里只是一些和程序员发展,面试,优秀程序员的特点等相关的部分。 有些想法和 MSF 中的原则也很相似 (见 <移山之道>)。 Coder What they say about good programmer, interview, and design My interpretation Dan Ingalls Guru of Smalltalk; inventor of BitBlt...
|
-
|
正在读 “ Coders at Work ”, 对15 位顶级程序员的采访, 总共600页。 这些看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选,面试程序员,优秀程序员的特点,和程序设计的句子。下面是 3 个程序员的心得,和我的几句解释。 Peter Norvig 讲了NASA 的一个著名事故的一些故事,我也重构了一下,写在后面. Coder What they say about good programmer, interview, and design...
|
-
|
正在读 “ Coders at Work ”, 对15 位顶级程序员的采访, 总共600页。 从采访的模式看,有点像“艺术人生”, 一般都是音乐起,讲小时候的故事,你怎么开始写程序的? (Brad 同学 5 岁开始写) ; 不过后来并没有神秘嘉宾上场,也没有声泪俱下的宣泄。 无论如何, 这些看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选,面试程序员,优秀程序员的特点,和程序设计的句子。下面是前6个程序员的心得,和我的几句解释: Coder...
|
-
|
当我对着远程的大屏,给北京的IBM中国研究院几位面试官汇报完30分钟技术报告之后,心里忐忑不安,这已经是终面了…一关关拼得不容易,但却很精彩! 在之后的几天,很高兴接到了来自IBM两位高级经理的电话,分别给我介绍了他们部门情况和项目情况,表示我的报告“印象深刻”,“能力很突出”…真的是非常感谢他们能给我这个机会! 诀窍 我不是聪明过人的天才,但是我相信自己的研究能力,这来源于一个诀窍——我悟出一条“定律”,那就是:能力是一种态度! 简单解释如下:这世界上不缺乏聪明人,但是缺乏懂得运用自己聪明才智的人。...
|
-
|
上回提到《 结婚相册 》的快速流传, 其实,不但是结婚相册, 有时候网络上出现一篇似是而非,似非而是的热帖,大家就纷纷转贴, 大家的朋友看了之后也热气上冲,继续转贴。。。 这篇博客 ( http://blog.163.com/hawin2000@126/blog/static/390562922008109112019157/ ) 分析了一个题为 美国兰德公司对中国人的评价 的热帖,并指出,它是一篇学术文章( China and Globalization ) 和 一篇 BBS 帖子(最原始的出处已无此文,...
|
-
|
当你看到你的一个朋友的 Live Space 有了这个更新,你当然想看. 但是你是点击文字 “我和他的结婚录像和相册集”, 还是旁边的 "心形图标"? 很多人,包括我,都点击了"心形图标", 不幸的是,这样就会把这个相册集加入你自己的收集中,然后你的朋友就会看到你的更新: 他们当然很好奇,这哥们不是还没结婚么,怎么和“他”都结婚了还有录像和相册集? 他们可以点击文字,也可以点击 "心形图标"... 于是,在下一个24小时内,...
|
-
|
Programming and Software: Elements of Programming Coders at Work Microsoft, Apple: Hard Drive: Bill Gates and the Making of the Microsoft Empire (read before) How Would You Move Mount Fuji? : Microsoft's Cult of the Puzzle -- How the World's Smartest...
|
-
|
[转发的宣传] 大会官方网站 www.china-cpp.org 。 作为软件开发语言的翘楚,C++对于现代软件的发展功不可没,特别是在系统软件开发领域,C++扮演着关键的角色。中国作为全球软件产业最具潜力的市场,越来越多的企业认识到了C++及相关系统软件技术在软件产业中举足轻重的作用。 为了推动C++及相关系统软件技术在国内的深度应用与发展,提升国内IT企业的研发水平,第二届C++技术大会定于2009年12月3日-4日在上海隆重召开。届时,来自海内外C++技术领域的近20位著名技术专家将就C++及相关系统软件开发技术的热点应用和最新发展,分享技术观点、探讨最佳研发实践。...
|
-
|
转贴, 并请抄送周济,贵仁同志。 http://www.chinanews.com.cn/gn/news/2009/11-05/1947844.shtml ... 我是在上个世纪30年代去美国的,开始在麻省理工学院学习。麻省理工学院在当时也算是鼎鼎大名了,但我觉得没什么,一年就把硕士学位拿下了,成绩还拔尖。其实这一年并没学到什么创新的东西,很一般化。后来我转到加州理工学院,一下子就感觉到它和麻省理工学院很不一样,创新的学风弥漫在整个校园,可以说,整个学校的一个精神就是创新。在这里,你必须想别人没有想到的东西,说别人没有说过的话。拔尖的人才很多,我得和他们竞赛,才能跑在前沿。这里的创新还不能是一般的,迈小步可不行,你很快就会被别人超过。你所想的、做的,要比别人高出一大截才行。那里的学术气氛非常浓厚,学术讨论会十分活跃,互相启发,互相促进。我们现在倒好,一些技术和学术讨论会还互相保密,互相封锁,这不是发展科学的学风。你真的有本事,就不怕别人赶上来。我记得在一次学术讨论会上,我的老师冯·卡门讲了一个非常好的学术思想,美国人叫“good...
|
-
|
问题 假设有4×4的方阵(里面可放字符串),给现定一个序列,检查这个序列是否在方阵的“连续对角线”上面: 例如:从左上到右下的连续对角线序列可能是: 1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16 1 5 2 3 6 9 13 10 7 4 8 11 14 15 12 16 分析 刚刚看到此题目,可能有点晕,“连续对角线”是啥?仔细一看,其实就是方阵里面的曲线序列(如下图),我就叫它“方曲序列”吧。 再一想,这样的序列应该有8条。考试的时候时间紧,只能大概写写思路了,回来用VS08调试着搞感觉好很多:(...
|
-
|
问题 不理解计算机底层运作机制,有时候会写出很费的代码,这说明了两个问题: 底层透明性做得还不够好; 在这样的技术条件下,我们还需要去多了解底层。 来看两个有趣的例子,问题需求是:求一个二维整数数组的和,非常简单吧? 本帖通过4个解法(后两个是并行算法),说明微小的改动对程序运行效率的巨大影响。 *注:需要注意的是,测试结果是在release下的,debug下代码未优化。 解法一 static int SumA( int [,] array, int n) { int sum = 0; for (...
|
-
|
问题 在开发过程中常常需要处理集合,因此我写了一些常用算法,贴出大家提提意见。 本帖介绍幂集合生成算法。 解法一 思路为: 构造初始序列00…0 如果全部为11…1,则停止 寻找位置最低的0,将其变1 将刚刚那个0前面的都变0 这里可以用到前面帖子构造的“动态有序集合”——BinHeap,共设置两个:一个用于保存0的位置,一个用于保存1的位置: public static List<T[]> Subset<T>(IList<T> list) { var zeros...
|
-
|
问题 在开发过程中常常需要处理集合,因此我写了一些常用算法,贴出大家提提意见。 本帖介绍组合生成算法。 分析 开一个数组,数组元素的值为1表示其下标代表的数被选中,为0则没选中。 首先初始化,将数组前m个元素置1,表示第一个组合选中前m个元素。 然后找到从左到右的第一个“10”组合,将其变为“01”组合, 同时将其左边的所有“1”全部移动到数组的最左端,例如: 1 1 1 0 0 //1,2,3 1 1 0 1 0 //1,2,4 1 0 1 1 0 //1,3,4 0 1 1 1 0 //2,3,4...
|
-
|
问题 在开发过程中常常需要处理集合,我写了一些常用算法,贴出大家提提意见 本帖是最简单的全排列生成算法,因为全排本来列就很费,所以以简洁为重,没太多考虑效率。 解法 public static List<T[]> Permutation<T>(IEnumerable<T> list) { List<T[]> permutations = new List<T[]>(); Permutation( new List<T>(list),...
|
-
|
问题 想必大家都记得《编程之美》“双线程下载”的精彩例子。这里我们来看一个类似的例子。 分析 由于采用“挂起/唤醒”线程的方式加锁,往往涉及到“用户态/核心态”切换,导致不小的性能损失,因此人们发明了自旋锁,在一些分布式应用程序中,性能得到了10~1000倍的提升。 解法 这里我们来看一个最简单的,不用API构造的自旋锁: class 简单自旋锁 { int c1 = 0, c2 = 0, who_wait; void WrokA() { int taskCnt = 0; while (taskCnt++...
|
-
|
问题 一辆载油500升的汽车从A开往1000公里外的B,已知汽车每公里耗油量为1升,A处有无穷多的油,其他任何地点都没有油,但该车可以在任何地点存放油以备中转,问从A到B最少需要多少油? 分析 这道题目初一看觉得方案太灵活,有点晕,网上所有对此题目的答案千篇一律的是: 题目可归结为求数列 an=500/(2n+1) n=0,1,2,3......的和Sn什么时候大于等于1000,解得n>6 当n=6时,S6=977.57 所以第一个中转点离起始位置距离为1000-977.57=22.43公里...
|
-
|
问题 在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的? 分析 初看此问题觉得很简单,但是网上各种版本的答案都各不相同,那到底谁是对的呢? 我们可以这样考虑——龟兔赛跑,跑得慢的针终归会被快的一圈一圈超过。那么,分别求出时针分针、分针秒针的重合时间,然后再看是否有相同。 这里都不难,关键是有一个陷阱!请问大家,我说“一圈一圈超过”,是不是每圈都被超过? 先求角速度:(度/秒) 1. 时针:w1 = 360 / 12*3600 = 1/120...
|
|
|
|