基因相关性

总时间限制: 1000ms 内存限制: 65536kB

描述

为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。

现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。

输入

有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。输出若两条DNA序列相关,则输出“yes”,否则输出“no”。

样例输入

0.85

ATCGCCGTAAGTAACGGTTTTAAATAGGCC 

ATCGCCGGAAGTAACGGTCTTAAATAGGCC

样例输出

yes


源代码:

  • C语言版:

#include<stdio.h>

#include<string.h>

char a[501],b[501];

int main()

{

int i,slena,slenb,slendb,xg=0;

double N,bl;

scanf("%lf\n",&N);

gets(a);

gets(b);

slena=strlen(a);

slenb=strlen(b);

slendb=(slena>slenb?slena:slenb);

for(i=0;i<slendb;i++)

{

if(a[i]==b[i])

{

xg++;

}

}

bl=xg/(double)slendb;

if(bl>=N)

{

printf("yes");

}

else

printf("no");

return 0;

}


  • C++版:

#include<iostream>

#include<cstdio>

#include<cstring>

char a[501],b[501];

using namespace std;

int main()

{

int i,slena,slenb,slendb,xg=0;

double N,bl;

cin>>N>>a>>b;

slena=strlen(a);

slenb=strlen(b);

slendb=(slena>slenb?slena:slenb);

for(i=0;i<slendb;i++)

{

if(a[i]==b[i])

{ xg++;}

}

bl=xg/(double)slendb;

if(bl>=N)

{

cout<<("yes");

}

else cout<<("no");

return 0;

}





注意事项:

C语言中输入时记得要空行/n,否则跳到下一行输入时第一串字符串会呈现空白。因为回车后是下一串字符串的输入,回车空白无内容。


猜你喜欢

转载自blog.csdn.net/yang_2002/article/details/79055489