摘要:
目录开篇啊哈!算法数据决定程序结构编写正确的程序编程中的次要问题程序性能分析粗略估算算法设计技术代码调优节省空间排序取样问题搜索堆字符串开篇具体化你的解决的问题。下面是A和B的对话。A:我该如何对磁盘文件进行排序?B:需要排序的内容是什么?文件中有多少条记录?每个记录的格式是什么?A:该文件包含至多10,000,000个记录,每条记录都是一个7位整数。B:如果文件那么小,为什么要使用磁盘排序呢?为什么不在主存中对它排序?A:该功能是某大型系统中的一部分,大概只能提供1MB主存给它。B:你能将记录方面的内容说得更详细一些吗?A:每个记录是一个7位正整数,没有其它的关联数据,每个整数至多只能出现一 阅读全文
摘要:
前言本文翻译自TopCoder上的一篇文章:Dynamic Programming: From novice to advanced,并非严格逐字逐句翻译,其中加入了自己的一些理解。水平有限,还望指摘。前言_我们遇到的问题中,有很大一部分可以用动态规划(简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的,因为干巴巴的理论实在不好理解。注意:如果你对于其中某一节已经了解并且不想阅读它,没关系,直接跳过它即可。简介(入门)什么是动态规划,我们要如何描述它?动态规划算法通常基于一个递推公式及一个或多个初始状态。 当前子问题 阅读全文
摘要:
从设计目的上来说,接口和抽象类,本身就具有者非常类似的目的。那就是都是想制定一套规则,将具体问题进行抽象,归纳。但接口与抽象类还是有一定区别:1)二者不在一个层级 抽象类可以实现接口,但接口却无法继承抽象类吧?所以严格来说,接口是抽象类的上级。2)作用域不同 接口体现了的是相同类别或者不同类别下事物的归纳,而抽象类则更多的体现在对相同类别事务的归纳上。这在编程中的体现就是一个类可以实现多个接口,而不能继承多个抽象类,因为一个人能有各种的功能,这些功能可能是人类特有的,也可能是和其他动物共有的,但绝对不能有一个以上的亲生父亲。3)开放性有所不同 接口和抽象类虽然相似,但在某些场合,如分布式... 阅读全文