PKU1080--Human Gene Functions(基因相似度,动态规划)

328K 0MS GCC 983B 2009-01-09 08:57:52

对字符串的最后一位分析,分三种情况:(第一个字符串有n位,第二个字符串有m位)

1)n位和m位匹配+前面子串的最优值(第一个基因的前n-1位,第二个基因的前m位)

2)第一个基因的最后一位(即n位)与‘-’匹配+前面子串的最优值(第一个基因的前n-1位,第二个基因的前m位)

3)第二个基因的最后一位(即m位)与‘-’匹配+前面子串的最优值(第一个基因的前n位,第二个基因的前m-1位)

核心代码:

best[i][j]=max(best[i-1][j-1]+table[atod(a[i])][atod(b[j])],best[i-1][j]+table[atod(a[i])][4],best[i][j-1]+table[4][atod(b[j])]);

初始化工作:

for(i=1;i<=lena;i++)
  best[i][0]=best[i-1][0]+table[atod(a[i])][4];
 for(i=1;i<=lenb;i++)
  best[0][i]=best[0][i-1]+table[4][atod(b[i])];

其中table记录的是题目所给的基因函数的表格。

代码如下:

 

Code

你可能感兴趣的:(functions)