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