您的位置:首页 > 其它

机试题:查找基因序列问题

2015-05-11 19:52 204 查看
程序设计竞赛例题解三4.3

#include<iostream>
using namespace std;

const int num=101;
long score[num][num];
char a[num],//给定目标序列
b[num],//数据库序列
seq[num];//得到的最相似序列
int dp()
{
long i,j,m,n;
m=strlen(a);
n=strlen(b);
for(i=0;i<=m;++i) score[i]
=(m-i)*(-7);
for(j=0;j<=n;++j) score[m][j]=(n-j)*(-7);
for(i=m-1;i>=0;--i){
for(j=n-1;j>=0;--j){
if(a[i]!=b[j]) score[i][j]=score[i+1][j+1]-4;
else score[i][j]=score[i+1][j+1]+5;
if(score[i+1][j]-7>score[i][j]) score[i][j]=score[i+1][j]-7;
if(score[i][j+1]-7>score[i][j]) score[i][j]=score[i][j+1]-7;
}
}
return score[0][0];
}

int _tmain(int argc, _TCHAR* argv[])
{
long i,n,max,p;
scanf("%s%d",a,&n);
for(i=0;i<n;++i)
{
scanf("%s",b);
p=dp();
if(i==0||p>max||(p==max&&strcmp(b,seq)<0)){
strcpy(seq,b);
max=p;
}
}
printf("%ld\n%s\n",max,seq);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: