摘要:
今天折腾了一下Linux Mint下的词典,自带的词典程序不知到怎么添加词典,查了一下,用的比较多的是GoldenDict,StarDict。比较了一下,感觉GoldenDict的界面比StarDict要好一些,于是安装了GoldenDict。 GoldenDict默认带的试英文的Wikipedia,需要安装英汉词典。于是找到了这份链接,http://xinyo.org/archives/61412/ ,可以下载,不过好像都太大了,另外找了一份,只有bgl文件,没有发音插图等,所以比较小,只有17MB。有地方说把词典放到/usr/share/下面新建的dict文件夹里,不过我没有搞定,或... 阅读全文
摘要:
需要安装latex,需要支持中文,这个问题一直很头疼。今天折腾了半天,总算搞定了,等搞定之后,发现还是很简单的。总结一下,希望给大家一个参考。 首先是安装包的选择,当然首选texlive,但是不是软件管理提供的texlive,也不用自己去下载texlive的镜像,而是从这里http://tug.org/texlive/quickinstall.html 下载一个安装器,它会帮你选择最近的源,安装速度还是不错的。至于为什么选这个,而不是自己下载镜像,因为有个地方提到这里的经过修改,对中文支持更好。texlive要比较好的支持中文,一般需要安装texlive-full。链接是安装指导,按照指... 阅读全文
摘要:
考完试,再来折腾一下电脑。Windows已经到了开机3分钟还不能用的情况,Ubuntu下面的各种文件也是各种混乱,图片啊,不知到下载下来干嘛的压缩包啊。感觉的没用的全部删掉,然后重装个系统,一切基本上都是新的,感觉多好。 对Ubuntu12.04的感觉其实还是不错的,不过每次打开多个文件夹,要在文件夹之间切换的时候,点左边的快捷启动栏的文件夹图标,响应太慢了。看着Linux Mint的界面还不错,经典的类似与XP的界面,于是决定换到Linux Mint。选择的是Mint 13 Mate版本,除了不喜欢它的代号“玛雅”之外,其他的都还好,代号直接忽略。不过在安装Linux Mint的时候,... 阅读全文
摘要:
第7章,动态规划,Dynamic Programming 又是动态规划,上一次想整理动态规划,结果还没有整理完,实际上是没有整理的动力了,整理一道题都好费时间的。 现在又要整理,这次能整理多少了?已经开始写了,那至少有些成果吧。 最长公共子序列问题 书上例题,先简单分析一下,然后看与之类似的一个问题。 给出两个长度为n和m的字符串A=a1a2..an和B=b1b2..bm,确定A和B的最长公共子序列的长度。其中,子序列的定义是形式为ai1,ai2,..aik的字符串,ij满足1<i1<i2<..<ik<n,也就是没有要求子序列是元字符串中连续的字符序列。 为了使用 阅读全文
摘要:
第6章,分治法,divide & conquer 分治,分而治之,先把问题划分为小问题,先解决小问题,然后把小问题的解组合得到的大问题的解。这跟归纳法类似之处在于,都是先解决小问题,再由小问题得到大问题的解。只是归纳法中小问题的解与大问题的解之间是递推关系,分治法多个小问题之间是并列关系。 经典算法有合并排序,快速排序,大整数乘法,矩阵分块乘法,寻找第k小元素,最近点对。下面先看排序算法。 在review1.2里面,已经给除了集中经典的排序算法的实现,并且给出归并排序和快速排序的时间复杂度都是O(nlogn),而这一章给出了一个平均比较次数(不是运行时间的)的测试结果,归并排序的性能比 阅读全文
摘要:
第14章,随机算法,random algorithm。 随机算法,当算法在执行过程中面临一个选择时,随机行选择常比最优选择快,因此随机算法可以在一定程度上降低算法的复杂度。 由于随机过程的存在,对所求解问题的同一个输入,可能得到完全不同的输出。 随机算法一般分为四类,数值随机算法,蒙特卡罗(Monte Carlo)算法,拉斯维加斯(Las Vegas)算法和舍伍德(Sherwood)算法。 数值概率算法常用于数值问题的求解。这类算法所得到的往往是近似解。而且近似解的精度随计算时间的增加不断提高。在许多情况下,要计算出问题的精确解是不可能或没有必要的,因此用数值概率算法可得到相当满意... 阅读全文
摘要:
复习算法,整理一下这个KMP算法。给定一个长为n的字符串S,和长为m的模式字符串P,判断P是否在S中出现,如果出现给出位移。直接的想法就是,循环,从S的第i位开始,比较S[i,..,i+m-1]与P是否相同,这样的循环要n-m+1次,每次循环的时间复杂度O(m),那么总的时间复杂度就是O(nm)。对字符串的查找有更快的线性时间算法,那就是KMP算法。K就是Knuth。KMP算法的主要思想是,对模式字符串预处理,得到自身匹配的位移信息,然后在与目标字符串匹配的过程中,如果发生不匹配,那么接下来根据自身匹配的位移信息进行移位,例如S=abababca,P=ababca,模式字符串自身匹配位移信息如 阅读全文
摘要:
归纳法这一章里提到的其他算法有整数幂,多项式求值,生成排列和寻找多数元素的算法。 整数幂算法中,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 阅读全文