03:基因相关性
总时间限制: 1000ms 内存限制: 65536kB
描述
为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入
有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。
输出
若两条DNA序列相关,则输出“yes”,否则输出“no”。
样例输入
0.85
ATCGCCGTAAGTAACGGTTTTAAATAGGCC
ATCGCCGGAAGTAACGGTCTTAAATAGGCC
样例输出
yes
碱基对概念
碱基对是形成DNA、RNA单体以及编码遗传信息的化学结构。组成碱基对的碱基包括A、G、T、C、U。严格地说,碱基对是一对相互匹配的碱基(即A:T,G:C,A:U相互作用)被氢键连接起来。然而,它常被用来衡量DNA和RNA的长度(尽管RNA是单链)。它还与核苷酸互换使用,尽管后者是由一个五碳糖、磷酸和一个碱基组成。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
double n = 0;
String x;
String y;
try {
n = Double.parseDouble(bf.readLine().toString());
x = bf.readLine().toString();
y = bf.readLine().toString();
int m = x.length();
double ans = m;
double sum = 0;
//每个碱基对以一比对,统计个数
for (int i = 0; i < m ; i++) {
if((x.substring(i, i+1)).equals(y.substring(i, i+1))) {
sum++;
}
}
//判断是否有序
if(sum/ans>=n){
System.out.println("yes");
}else {
System.out.println("no");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}