总时间限制: 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,否则跳到下一行输入时第一串字符串会呈现空白。因为回车后是下一串字符串的输入,回车空白无内容。