05 2012 档案
摘要:归纳法这一章里提到的其他算法有整数幂,多项式求值,生成排列和寻找多数元素的算法。 整数幂算法中,x^n,当指数n为偶数时,可以先求解y=x^(n/2),然后y=y^2即得到结果,当n是基数时,y=x^((n-1)/2),y=y^2,y=xy,只需要补充一步。当然,求解x^(n/2)是直接递归调用整数幂的过程。 多项式求值,将多项式改写为嵌套乘法的形式,以减少乘法操作的次数,使得算法加速。在http://www.cnblogs.com/skyivben/archive/2012/05/13/2497900.html#2376283 测试了这种优化方法,得出了一些很有意思的结果。 生成排...
阅读全文
摘要:第五章,归纳法,Induction。 对于带有参数n的问题,在寻找这类问题的解时,有时可以从求解一个带有小一点参数的相同问题开始,如参数是n-1,n/2等,然后再把解推广到参数为n的情况。这个过程可以用数学归纳法证明。如数学归纳法有个前提条件一样,只有在知道如何求解参数小于n的同样问题时,这个递推归纳的过程才能进行。所以这种算法过程也很容易的可以写成递归。 典型的例子,选择排序,插入排序,基数排序等等。这里给出几个典型的程序。 基数排序 参考http://www.cnblogs.com/dlutxm/archive/2011/10/20/2219321.html 这位博主的代码很...
阅读全文
摘要:几种经典的查找和排序算法。 查找算法有线性查找,二分查找。线性查找就是遍历所有元素,直到找到目标元素,时间复杂度为O(n),相对于输入规模是线性的。二分查找,在数组已经排序的情况下,可以进行二分查找,每次缩小一半的查找范围,时间复杂度为O(logn)。需要注意的是,算法里面的log表示log2. 这两个算法的代码如下:#include <vector>#include <iostream>using namespace std;/* * 线性查找,即遍历所有元素查找 */ template<class Type>int LinearSearch(vector
阅读全文
摘要:算法课要考试了。没想到一晃就到学期末了。一开始是打算边上课边整理算法的学习笔记的,结果拖到现在了。如果现在复习的时候不整理,估计以后都不会整理了。那就现在整理吧。 课本,算法设计技巧与分析。 先来看第一章,主要内容是复杂性的概念和分析。 为了分析算法的复杂性,提出了计算时间复杂性和空间复杂性的方法。对于时间复杂性,计数元运算操作的次数。元运算如算数运算,包括加减乘除,还有比较和逻辑运算,赋值运算,包括遍历表或树的指针赋值。对于空间复杂性,计数用到的存储单元,不包括分配用来存储输入的空间。 复杂性是相对于问题的输入规模而言的。当输入是一个列表的时候,输入规模是列表元素的个数,而当输入...
阅读全文
摘要:Code Jam的Round 1已经结束了,水平太菜,已经被淘汰了。开始整理做过的题。就从Qualification Round开始吧。http://code.google.com/codejam/contest/1460488/dashboard#s=p0Problem A.Speaking in Tongues 这道题比较简单,题目大概意思就是一种方言,也是使用英语的26个字母,但与正常英语里面的26个字母有一个固定的映射关系,题目要求使用这种映射关系,把给定的语句翻译成另一种语句。 需要注意的是,题目是出了示例,而且有提示的3个字母的映射关系,那么如果示例里面有剩下的映射关系,问...
阅读全文
摘要:磁盘不进行碎片整理会是一个问题。 没有垃圾回收机制也是一个问题。 当下载的各种论文各种pdf在电脑的各个文件夹中乱七八糟的时候,是不是就会无缘无故的心烦意燥起来,明明记得那份论文已经下载下来了,但不知道放那去了,难道再下一份?或者这下载的已经不是第二份了。不擅长于文件管理,系统的文件管理还不够智能,文件管理就成了一个头疼的问题。 现在云炒得很热,云存储,云操作系统,只要一个Web浏览器就可以了。现在的网速还不是很快,把文件放在云端还不那么靠谱,但是我觉得把文件用Web界面来管理还是很不错的。Google一直在搞Chrome OS,专门搞了个浏览器操作系统,我觉得很浪费资源。它直接把C...
阅读全文
摘要:以前的版本是11.10,启动系统后,就提示有是否升级到12.04的提示,选择升级,然后就开始下载内容和升级了。第一次以这种方式升级,以前基本上都是重新安装,不过这次希望保留已经安装的软件,所以就用这种方式了。下载升级包的速度还是蛮快的(或许是因为在校内,用的是学校的升级源),不过安装升级包的速度还是有点慢,一开始显示需要三个多小时,还好后来时间跳了几次,总共时间大概1个多小时吧。而且升级过程中还有一些信息需要确认,比如Apache和MySQL的更新确认,升级过程中最好不要在继续使用,我本来想边升级,边看看网页的,结果后来浏览器死掉了,其他的也没反应,还好最后升级完了。 Unity比11....
阅读全文
摘要:习惯在Matlab里面计算,不太喜欢系统自带的计算器,但Matlab每次启动都比较慢。对于简单的计算,用不着Matlab,一直希望有一个简单版本的Matlab。一次看到OSChina上有分享一个简单的命令行计算器,觉得这个不错,不过功能仅限于数字的四则运算,于是想着可不可以写一个功能在稍微强一点的命令行计算器。于是就有了这个项目,称之为Command Line Calculator(CLC)。希望实现的功能,1. 数值运算,整数和浮点数;2. 变量赋值,表达式运算;3. 数学函数;4. 其他。网上已经有些计算器或者是数学表达式运算的程序了,上面的功能也有人实现了的。所以我在做一边,一是练习一下
阅读全文
摘要:最近开始读《黑客与画家》,觉得这是一本非常好的书,尤其是对程序员。书中有很多可以学习的地方,下面是自己的一些心得,大家多多交流。 在第二章,作者解释了书名,为什么把黑客与画家放在一起,黑客与画家相同的地方就在于,他们都是创造者。与作曲家,建筑师,作家一样,黑客和画家要做的是创造好的东西,他们本身不做研究,如果他们在创造好的东西的过程中发现一点新的东西,那就更好了。而创造好的东西的方式,通常是对已经存在的东西做些巧妙的修改,或是以一种新的方式将已经存在的想法结合起来。所以黑客有些尴尬,在学校里的话,会要求做些学术性的东西,在公司一般又会被要求实现代码,能够自己定义自己想做的东西的黑客少之又...
阅读全文