生物学上通常采用编辑距离来定义两个物种DNA序列的相似性,从而刻画物种之间的进化关系。具体来说,编辑距离是指将首将一个字符串变换为另- 一个字符所需要的最小操作次数。操作有三种,分别为:插入-一个字符、删除一一个字符以及将一个字符修改为另 -一个字符。用字符数组str1和str2分别表示长度分别为len1和len2的字符串,义二维数组d记录求解编辑距离的子问题最优解,则该二维数组可以递归定义为:
【C代码】
下面是算法的C语言实现。#includestdio.h>
#define N 100
char A[N]="CTGA";
char B[N]="ACGCTA";
int d[N][N];
int min(int a, int b){
return a b ? a: b;
}
int editdistance(char *str1, int len1, char *str2, int len2){
int i, j;
int diff;
int temp;
for(i=0; i=len1; i++){
d[i][0]=I;
}
for(j=0; j=len2; j++){
(1);
}for(i=1;i=len1;i++){
for(j=1; j