摘要:
本文通过算法分析和实验对比,阐述了对于延迟计算这一特性的看法,着重讨论了延迟计算所需要付出的代价。同时,本文也是对GarbageMan 的《一个超复杂的简介递归》中错误观点的驳斥,以及通过实验数据对 GarbageMan 人身攻击的有力反击。 阅读全文
摘要:
我们可以通过一定的设置,构造出 C++ 的引用类型,这样的类型具有多态的行为方式,从而可以支持面向对象编程。我们总是以实现多态行为为目的来看待引用类型的,比如说其基类是什么,有没有虚函数,等等。我们应当禁用一个引用类型的拷贝构造函数以及拷贝赋值操作符,并且使用虚析构函数。引用类型的对象反映的是其身份——这是对什么对象的引用?因此,引用类型也常被成为多态类型。 阅读全文
摘要:
在读C# in depth时,作者曾经感慨过,可惜C#中没有类似于C++的const机制,没有办法方便的返回一个对象的只读视图。读到这里,我就对于这一问题耿耿于怀。C++中的const和C#中的readonly有何区别?C++的const好在哪里?为什么C#没有实现C++中的const机制?如何弥补这一缺憾? 阅读全文
摘要:
本人从小喜欢编程,本科和研究生都念的软件工程专业,这么些年下来,也算是读了不少书。近日不少同学想让我给推荐一些书,拉个书单。本考虑到自己才疏学浅,好读书不求甚解,并且实践经历又极少,难免会有疏漏或者偏... 阅读全文
摘要:
考虑快速排序为什么最坏情况下时间复杂度为O(n2)?这是因为每次进行划分的时候,都有一个部分大小为0(或者说为一个常数)。如果我们能够找到一种时间复杂度为O(n)的划分方法,使得划分后的两部分大小均为Θ(n),则快速排序的时间复杂度总能为Θ(nlogn)。
假设我们能够用非常小的代价寻找5个元素中的中位数,则我们可以递归的将原数组划分为大小为5的子数组,寻找每个子数组的中位数。容易证明,通过这种方式最终找到的中位数,至少存在Θ(n)的元素比它小(大)。 阅读全文
摘要:
有一堆 n 个石子,两个人轮流取石子,最后一个取完石子的人获胜。要求:
第一次取石子时不能将所有石子取光。
每一次至少取一个石子。
每一次可以取的石子数不超过上一个人取的石子数的二倍。
求先手必败态构成的集合。 阅读全文
摘要:
有16颗石子,两个人轮流取子,每次只能取一颗、两颗或者四颗石子,最后取完石子的人为负。问,先取子的人还是后取子的人有必胜策略。
我们该如何一步步解决这一问题呢? 阅读全文
摘要:
考研究生调剂到了中科大软件学院,现在看来是一件让我觉得十分幸运的事情。中科大的学习气氛非常的浓,课程的内容也十分有新意,虽然有新意,但是又都是很基础的内容,让我收获很大,很多课程给我带来了很大的启发。... 阅读全文
摘要:
过节了终于有时间写写东西了,有些东西不记录下来就会一点点忘掉。 前几天去面试,有一道题我回答的不太令自己满意,回来之后思索了一下,又想到了一些东西,记录一下。 简单问题? 题目就是简单的反转单向... 阅读全文
摘要:
今天看到有个小MM抱怨高数难,不免有些感慨。 现在很多课程把本来十分快乐的事情变得不再快乐,让我看的痛心疾首,亲身经历的苦不堪言。学习本是一件很快乐的事情。我从小就是一个让所有老师又爱又恨的孩子——我几乎上课从来不听课,但偏偏什么都会,而且考试成绩还不错。我不喜欢听课,一方面是因为上课讲的东西我都知道了,另一方面是上课讲的好没意思,远没有一些趣题吸引我。我不听课但成绩还上课的原因,多半是因为我喜欢那些所谓的奥数、奥物等题。这些题有难度,但是也很有意思,不断的吸引着我主动的去从我能达到的渠道中获取足够我解开这道难题的知识。直到上大学前,这都是我学习的直接动力。我一直很庆幸,庆幸我所走的这条道路上 阅读全文