代码改变世界

求所有最大公共子序列的算法实现

2012-11-15 23:55 by 钱吉, 10059 阅读, 5 推荐, 收藏, 编辑
摘要:最近看了很多关于LCS(Longestcommonsubsequenceproblem,最长公共子序列)的文章,大部分问题都只是求出最大公共子序列的长度,或者打印处其中的任意一个最大子序列即可,但是如何快速的打印出所有的最大长度子序列?这个问题好像看到的不多。本文给出了传统的DP(dynamicprogramming,动态规划)算法进行求解的过程,并用c语言实现。另外参考一篇论文实现了其中的一种打印所有最大公共子序列的算法,这个算法比起传统的算法而言,时间复杂度大大降低.一:LCS解析首先看下什么是子序列?定义就不写了,直接举例一目了然。如对于字符串:“student”,那么su,sud,su 阅读全文

c和c++中const的区别

2012-11-09 17:58 by 钱吉, 418 阅读, 0 推荐, 收藏, 编辑
摘要:关于常量指针,首先看这段代码:const int test = 5;const int *pm = &test;int *pn = pm;printf("%d\n",(*pn)++);printf("%d\n",*pm);printf("%d\n",test);在C语言中标准中,编译器可以通过非const指针修改const值(我用gcc 4.6.1,输出结果:5,6,6)。而如果这段代码放在c++中编译时是通不过的(第二行报错:无法将int *转换为const int *)。为什么C标准不会对这种行为排斥,因为C标准只是规定c 阅读全文

c/c++的异常统一处理

2012-11-07 23:01 by 钱吉, 1388 阅读, 0 推荐, 收藏, 编辑
摘要:今天看HTK代码,发现里面的错误处理机制很好,所以自己在这里总结一下。如何将某些类型的错误集中起来统一处理,使得程序易于维护和具有更好的可读性。这里假设有这样一个故事,有个美女征婚,理想中的男人如果要表白成功,需要具备6个条件:玫瑰(Rose),戒指(Ring),宝马(BWM),高(Tall),富(Rich),帅(Handsome)。(好吧,我承认这个故事很低俗,但是实在想不出其它例子来比喻了,将就着看吧,-_-)。如果少了一个条件,sorry,美女要抛出异常了。但是现在求婚的人太多,美女无暇顾及,所以决定先请人把关,再根据把关人反馈的结果统一处理。好了,先看C语言如何处理:C语言错误统一处理 阅读全文

尾递归和编译器优化

2012-10-30 15:47 by 钱吉, 2490 阅读, 0 推荐, 收藏, 编辑
摘要:最近看到尾递归,所谓的尾递归wiki解释如下:尾部递归是一种编程技巧。递归函数是指一些会在函数内调用自己的函数,如果在递归函数中,递归调用返回的结果总被直接返回,则称为尾部递归。尾部递归的函数有助将算法转化成函数编程语言,而且从编译器角度来说,亦容易优化成为普通循环。这是因为从电脑的基本面来说,所有的循环都是利用重复移跳到代码的开头来实现的。如果有尾部归递,就只需要叠套一个堆栈,因为电脑只需要将函数的参数改变再重新调用一次。利用尾部递归最主要的目的是要优化,例如在Scheme语言中,明确规定必须针对尾部递归作优化。[1][2]可见尾部递归的作用,是非常依赖于具体实现的。(http://zh.w 阅读全文

利用sort对数组进行自定义排序

2012-10-30 15:29 by 钱吉, 1787 阅读, 0 推荐, 收藏, 编辑
摘要:关于sort的常规用法这篇博文写的很具体,可以参考:http://www.cnblogs.com/xinghua/archive/2007/02/07/643867.htmlsort函数的三种形式:sort LISTsort BLOCK LISTsort SUBNAME LIST本文主要讲下自定义函数对数组进行排序,即如何实现SUBNAME函数。看下面的列子就明白了:有一个文本,里面记录了一下内容,第一列表示文件名,第二列表示文件创建时间,如2011/9/10/12/5表示文件创建于2011年9月10日12点5分。file1 2012/10/30/3/15file2 2012/9/28/12/ 阅读全文

练手系列(链表)

2012-10-20 16:04 by 钱吉, 334 阅读, 0 推荐, 收藏, 编辑
摘要:简单的单向链表的实现,主要功能包括:链表反转 元素获取 链表合并。LinkList.h 1 #ifndef _HEADER_LINKLIST_CLASS 2 #define _HEADER_LINKLIST_CLASS 3 #include <iostream> 4 using namespace std; 5 6 typedef struct _ListNode 7 { 8 int data; 9 _ListNode *pnext;10 11 }ListNode,*pListNode;12 class LinkList13 {14 public:15 LinkLis... 阅读全文

多进程遍历目录并查找文件

2012-10-15 14:38 by 钱吉, 723 阅读, 0 推荐, 收藏, 编辑
摘要:有时候需要在一个深层次的目录下面查找某个类型的文件,这里利用遍历递归查找目录,并使用多进程操作提高效率。如果现在只需要在一个目录下查找,脚本getfile_single.pl为:use strict;my @ARGV==2||die"usage:*.pl dir rec\n";my $dir=$ARGV[0];##input directorymy $logfile=$ARGV[1];##result file to save pathmy @all;my $str;my $grep = "";###this is the regular exressi 阅读全文

plp特征提取原理和方法

2012-10-12 12:06 by 钱吉, 9140 阅读, 0 推荐, 收藏, 编辑
摘要:LPC(Linear Predictive Coding,线性预测分析):由于语音信号的发音特性,提取特征后的帧与帧之间是不独立的,那么我们可以用前面的帧或后面的帧预测当前帧。所求的的预测系数就是我们要用到的特征。线性预测分析中,我们可以用一个全极点滤波器为声道响应函数建模,即y(z)=x(z).H(z).以最小化预测误差为目标优化系数a,就可以得到特征系数。通常采用自相关方法,利用durbin算法求解方程。这里给出参数计算公式:1) 给定一个窗内的采样点信号{sn,n=1,N},它的自相关序列计算公式为:,i=0,p.2) 滤波器还有一个反射系数{ki},可以理解为声道的反射系数,和预测误差 阅读全文

(转:htk中命令行参数的读取)

2012-10-12 11:28 by 钱吉, 835 阅读, 0 推荐, 收藏, 编辑
摘要:由于不知道来源出处了,请原作者见谅,如有需要请告知源地址。这里只是贴出来mark一下,以后便于查看。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>static int argcount; /* total args = argc */static int nextarg=1; /* next arg to return in GetxxxArg */static char **arglist;/* ----------- Command Line 阅读全文

反汇编学习

2012-10-11 18:50 by 钱吉, 3365 阅读, 0 推荐, 收藏, 编辑
摘要:(转:http://www.kuqin.com/assemble/20071122/2492.html)汇编语言和CPU以及内存,端口等硬件知识是连在一起的. 这也是为什么汇编语言没有通用性的原因. 下面简单讲讲基本知识(针对INTEL x86及其兼容机) ============================ x86汇编语言的指令,其操作对象是CPU上的寄存器,系统内存,或者立即数. 有些指令表面上没有操作数, 或者看上去缺少操作数, 其实该指令有内定的操作对象, 比如push指令, 一定是对SS:ESP指定的内存操作, 而cdq的操作对象一定是eax / edx. 在汇编语言中,... 阅读全文