博文

二叉树和红黑树(2007-04-19 14:27:00)

摘要:   An Introduction to Binary Search and Red-Black Trees By cpphamzaTopCoder Member As a programmer, you'll frequently come across tasks that deal with a number of objects -- numbers, strings, people, and so forth -- and that require you to store and process those objects. If you need to maintain a list of objects that are sorted and unique, and if you need to be able to quickly insert and retrieve objects to and from this list, the ideal data structure will be a tree set (or a tree map, if you consider each object a key and associate another object called a value to it). Many programming languages provide built-in support for tree-based sets and maps -- for instance, Java's TreeSet/TreeMap classes and the C++ Standard Template Library's set and map classes -- but because of their common use, it's easy to misunderstand what actually happens behind the scenes, and how the underlying data structures actually work. That’s what this article is all about. We'll sta......

阅读全文(6599) | 评论:2

Binary Search (2007-04-19 14:22:00)

摘要:Discuss this articleBinary Search By lovroTopCoder Member Binary search is one of the fundamental algorithms in computer science. In order to explore it, we'll first build up a theoretical backbone, then use that to implement the algorithm properly and avoid those nasty off-by-one errors everyone's been talking about. Finding a value in a sorted sequenceIn its simplest form, binary search is used to quickly find a value in a sorted sequence (consider a sequence an ordinary array for now). We'll call the sought value the target value for clarity. Binary search maintains a contiguous subsequence of the starting sequence where the target value is surely located. This is called the search space. The search space is initially the entire sequence. At each step, the algorithm compares the median value in the search space to the target value. Based on the comparison and because the sequence is sorted, it can then eliminate half of the search space. By doing this repeatedly, it will eve......

阅读全文(2058) | 评论:0

 Power up C++ with the StandardTemplate(2007-04-19 14:17:00)

摘要: Power up C++ with the Standard Template Library: Part II: Advanced Uses Creating Vector from Map   Chick Here 2: Power up C++ with the Standard Template Library: Part I By DmitryKorolevTopCoder Member Chick Here 1:......

阅读全文(2292) | 评论:0

我喜欢的美女(2007-04-17 14:59:00)

摘要:                               这是我很喜欢的女孩子的外型.真的很喜欢.也许她长的太像我姐.太像唯一的她不好的地方就是没有我姐的眼睛漂亮.我姐的眼睛是大大的双眼皮.像关芝玲一样的眼睛.虽然眼睛没有我姐好看,但是已经神似了。我太爱你了。哦,太也太像我表姐了。她长着我家族一样的脸旁.如果上天让我遇到这样的女孩我一定不错过的.我有严重的恋家人的情节.  美女我爱你!!!!!!!!!你也应该长着一样给我姐一样的高度.170有吗???真希望能知道你的名字.     哈哈.在做梦了,学习吧!!!!!            她应该是运动型.她太有才了。哈哈。我真是超喜欢.怎么摄影师不多拍几张呢? 喂.摄影师!!1 摄影师!!1 忘了这里还有个我喜欢的, acing  ......

阅读全文(3767) | 评论:7

程序员生涯之我见 找到自己的兴趣所在[摘](2007-04-16 11:55:00)

摘要:在海外有很多中国人在从事程序员这个职业。我认识很多这样的朋友,发现许多人并不快乐,只是将这个工作当成养家糊口的工具。还有许多人工作努力而不能入门。我曾经在很长一段时间内也有过困惑,但最后终于走了出来。在这里谈谈自己的看法,希望对大家有一些启发。     俗话说“兴趣是最好的老师”。这话很有道理,但运用在事业上往往并不是这么一回事。在学生时代你可以追随兴趣天马行空,为未来作各种各样的设想。坚韧不拔而又有些运气的在后学生时代仍可在预设的道路上跋涉前进,甚至一帆风顺。而绝大多数同仁们则在生活所伏下的各种小圈套中纷纷落马,有的痛苦挣扎,有的怨天尤人,还有的则既来之,则安之,以失败者的心态接受生活的安排。     这些为生活所改变的同仁们的共同点是不再(敢或愿)提对原先事业的兴趣了,如果曾经有过的话。当然,兴趣是会变化的。但因生活改变而生的新的兴趣往往难以长久,而人生苦短,又经得起几次改变呢?     和其它许多职业一样,从事程序员职业的可分成三种人:入门的,不想入门的,和想入门而没有入门的。我对入门的定义是:喜欢这个职业并且有持之以恒的目标和努力。     入门的是极少数。如果一个程序员一直在从事这个职业,而且热爱并愿为之终老,我想他一定是幸福的。任何职业其实都是这样。我所在的公司有个年轻的老美,是负责三十多个程序员(包括我)的Software Architect,为人朴实而性格腼腆,但他对职业热爱的单纯连我都嫉妒得要命。他好像可以不食人间烟火,可以没有任何爱好(他其实一年要度好几次假的,但全是老婆安排,当然也参加公司活动),但对几年前写的代码记得清清楚楚。他没有可炫耀的学历(服兵役间在一家小学校读的计算机本科)和经历(因为太年轻),在任何场合都总是腼腆地笑着(我将他研究了很久,发现他实在本性如此),毫不起眼,但我知道,他是被造化所祝福的。他可以一直思考一个问题,在半夜起来用VPN连上公司网络修改一个bug。我遇到过不少优秀的程序员,就没他这么纯的。     不想入门的程序员可能是这三种人中比例最高的。女的居多,家庭负担重的居多,思想活跃的居多。程序员职业为男性所主宰是一个事实。女孩子结婚后兴趣大多都变了,程序员工作辛苦,责任大,也就没什么吸引力了。很多程序员聪明而思想活跃,却不愿意喜欢这个职业。有的一直......

阅读全文(2391) | 评论:0

编译原理学习导论(2007-04-16 11:51:00)

摘要:大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了。在20世纪50年代,编译器的编写一直被认为是十分困难的事情,第一Fortran的编译器据说花了18年的时间才完成。在人们尝试编写编译器的同时,诞生了许多跟编译相关的理论和技术,而这些理论和技术比一个实际的编译器本身价值更大。就犹如数学家们在解决著名的哥德巴赫猜想一样,虽然没有最终解决问题,但是其间诞生不少名著的相关数论。   推荐参考书   虽然编译理论发展到今天,已经有了比较成熟的部分,但是作为一个大学生来说,要自己写出一个像Turboc C,Java那样的编译器来说还是太难了。不仅写编译器困难,学习编译原理这门课程也比较困难。   正是因为编译原理学习相对困难,那么就要求有好的教师和好的教材。教师方面不是我们能自己更改的,而在教材方面我们却可以按自己的意愿来阅读。我下面推荐几本好的编译原理的教材。我推荐的书籍都是国外的经典教材,因为在国内的教材中,确实还没发现什么让人满意的。   第一本书的原名叫《Compilers Principles,Techniques,and Tools》,另外一个响亮的名字就是龙书。原因是这本书的封面上有条红色的龙,也因为獗臼樵诒嘁朐砘×煊蛉肥堤忻?所以很多国外的学者都直接取名为龙书。最近机械工业出版社已经出版了此书的中文版,名字就叫《编译原理》。该书出的比较早,大概是在85或86年编写完成的,作者之一还是著名的贝尔实验室的科学家。里面讲解的核心编译原理至今都没有变过,所以一直到今天,它的价值都非凡。这本书最大的特点就是一开始就通过一个实际的小例子,把编译原理的大致内容罗列出来,让很多编译原理的初学者很快心里有了个底,也知道为什么会有这些理论,怎么运用这些理论。而这一点是我感觉国内的教材缺乏的东西,所以国内的教材都不是写给愿意自学的读者,总之让人看了半天,却......

阅读全文(2062) | 评论:0

姚期智:锻造计算机科学拔尖人才(2007-04-16 11:47:00)

摘要:日前,由“图灵奖”获得者姚期智先生主导、与微软亚洲研究院共同合作的清华大学“软件科学实验班”确定了首期学生名单。来自全校大一大二的59名优秀的理工科学生成为幸运者,该班将在本年度的秋季学期开学。   姚期智先生是迄今为止获得“图灵奖”的唯一亚裔计算机科学家。应杨振宁先生邀请,他于2003年10月受聘清华大学“讲席教授”,并于2004年9月离开美国普林斯顿大学成为清华大学的全职教授。 像在2004年辞掉普林斯顿大学终身教职、卖掉美国的房子毅然回国一样,姚期智在担任清华大学全职教授仅一年半之后,就发起了志在培养国际计算机科学领军人物的“软件科学实验班”,动作之快令人惊诧,敢想敢做的风格令人钦佩。 “达则兼济天下”,在中国传统文化的浸润中成长到21岁的姚期智,绝对不是计算机科学领域的“孤胆英雄”——他在功成名就、完全可以全身而退的时候选择回到祖国的怀抱,为祖国的计算机科学研究和计算机人才培养披荆斩棘,探索前路。 谈起在清华大学建立的“软件科学实验班”,这件一度被美国和中国的计算机科学家认为是“相当遥远”的事情,姚期智语气坚定:“‘实验’二字是说这个班与普通的方式有些不同,同时又有精英教育的意思在里面。‘实验’二字在这里并不具有可能成功或者可能失败的含义,因为我觉得我们一定会成功。”   从培养精英博士生到培养精英本科生 2003年,在清华担任讲席教授的时候,姚先生还没有全职回国的打算。 2004年,在清华担任全职教授的时候,他的构想还是构建一个良好的机制培养博士生,建立起一支好的研究团队,但随后在清华的亲身感受,让他逐渐萌生了精英教育要“从本科生开始”的想法。 “我逐渐感觉到,想要培养好的研究生,实在是应该从本科生开始做起。所以我起先的构想就是教两门目前在清华还没有开的本科生课程——理论计算机科学(上、下)。” 姚期智这样想了,也这样做了。这个学期的每周二和周四上午,他都会赶到第六教学楼,面对120张稚嫩的面孔,带领他们开始一场充满奇趣的“理论计算机科学之旅”。 但是姚期智感觉,仅仅这样做还不够:“我感到应该让我的实践扩大一些,应该让学生接触到不同的计算机科学领域最为杰出的课程,而且要有一个特别的班,专门培养计算机科学领域的一流的本科生。” 在得到清华大学和微软亚洲研究院的全力支持后,“怎样聚集一些杰出的科学家将学......

阅读全文(2444) | 评论:0

关于计算机科学知识体系结构课程表(2007-04-16 11:39:00)

摘要:             这是清华大学的课程表样式.希望可以帮助那些自学的同学.   ......

阅读全文(4036) | 评论:0

Rockets looking to get back (2007-04-16 11:01:00)

摘要:HOUSTON -- The Rockets are still chasing the Utah Jazz for home-court advantage in the opening round of the playoffs.That, however, isn't their prime concern over the final two weeks of the regular season.While opening the postseason inside Toyota Center would be a nice bonus, the Rockets are more concerned with trying to get back on a roll and regaining their swagger heading into the playoffs.Since a surprising setback in Oklahoma City on March 25, the Rockets have dropped four of their past eight games including three straight in their own building. Houston coach Jeff Van Gundy has been so troubled by his team's recent play that he finds himself tinkering with the team's rotation.The Rockets will try to rediscover some momentum Monday night when they visit the Seattle Supersonics."We have to seize the opportunity in front of us because it could be the best one that we get," Rockets coach Jeff Van Gundy said. "You want to try to be playing your very best right now. Not necessarily to ......

阅读全文(2473) | 评论:0

蛇型矩阵的最简解(整体观察法)(2007-04-15 13:19:00)

摘要:蛇行矩阵 Problem蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 Input本题有多组数据,每组数据由一个正整数N组成。(N不大于100) Output对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。 矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。 Sample Input5Sample Output1 3 6 10 152 5 9 144 8 137 1211 整体观察法思想:    先看输出;将它旋转45度你将看到;            1        2    3     4     5    6  7     8    9    10  11   12   13    14  15 其实这样也可以做解了。但是还有跟好的能看的很清楚的.你再让这组数往左边靠你将看到. 1 2    3 4       5       6 7       8     9    10 11   12   13   14   15 现在你可以看到什么?你看没行的最后一个元素.1 3 6 10 15.再往斜的继续看得到下行.2 5 9 14.再下.4  8 13.再下.7 12.最后.11.没色做为一行.你再摆下来。 1 3  ......

阅读全文(3046) | 评论:2