DNA对比

脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子。它由4种主要的脱氧核苷酸(dAMP、dGMP、dCMT和dTMP)通过磷酸二酯键连接而成。这4种核苷酸可以分别记为:A、G、C、T。

DNA携带的遗传信息可以用形如:AGGTCGACTCCA… 的串来表示。DNA在转录复制的过程中可能会发生随机的偏差,这才最终造就了生物的多样性。

为了简化问题,我们假设,DNA在复制的时候可能出现的偏差是(理论上,对每个碱基被复制时,都可能出现偏差):

1. 漏掉某个脱氧核苷酸。例如把 AGGT 复制成为:AGT

  1. 错码,例如把 AGGT 复制成了:AGCT

  2. 重码,例如把 AGGT 复制成了:AAGGT

如果某DNA串a,最少要经过 n 次出错,才能变为DNA串b,则称这两个DNA串的距离为 n。

例如:AGGTCATATTCC 与 CGGTCATATTC 的距离为 2

你的任务是:编写程序,找到两个DNA串的距离。

【输入、输出格式要求】

用户先输入整数n(n<100),表示接下来有2n行数据。

接下来输入的2n行每2行表示一组要比对的DNA。(每行数据长度<10000)

程序则输出n行,表示这n组DNA的距离。

例如:用户输入:

3

AGCTAAGGCCTT

AGCTAAGGCCT

AGCTAAGGCCTT

AGGCTAAGGCCTT

AGCTAAGGCCTT

AGCTTAAGGCTT

则程序应输出:

1

1

2

【注意】

请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!

在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

请把所有函数写在同一个文件中,调试好后,拷贝到【考生文件夹】下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

源代码中不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。

允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。

例如,不能使用CString类型(属于MFC类库),不能使用randomize, random函数(不属于ANSI C++标准)

import java.util.Scanner;

public class Main {
public static int n;
public static String[] arrayA; public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
arrayA = new String[2 * n + 1];
in.nextLine();
for(int i = 1;i <= n;i++) {
arrayA[2 * i - 1] = in.nextLine();
arrayA[2 * i] = in.nextLine();
}
int[] result = new int[n + 1];
for(int i = 1;i <= n;i++) {
String A = arrayA[2 * i - 1];
String B = arrayA[2 * i];
int lenA = A.length();
int lenB = B.length();
int[][] dp = new int[lenA + 1][lenB + 1];
for(int k = 0;k < lenA;k++)
dp[k][0] = k;
for(int k = 0;k < lenB;k++)
dp[0][k] = k;
for(int a = 1;a <= lenA;a++) {
for(int b = 1;b <= lenB;b++) {
if(A.charAt(a - 1) == B.charAt(b - 1))
dp[a][b] = dp[a - 1][b - 1];
else {
dp[a][b] = Math.min(dp[a - 1][b]+1, Math.min(dp[a][b-1]+1, dp[a-1][b-1]+1));
}
}
}
result[i] = dp[lenA][lenB];
}
for(int i = 1;i <= n;i++)
System.out.println(result[i]);
}
}

最新文章

  1. HDU 5965 枚举模拟 + dp(?)
  2. 阿里云 ECS 逻辑卷挂载数据盘
  3. [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)
  4. sticky bit
  5. DataGrid GridView 单页javascript 表头排序
  6. 采用keepalived施工可用性MySQL-HA
  7. mysql解决中文乱码问题
  8. 【HLA】初识HLA/RTI
  9. iOS 中的block异常
  10. SharePoint WebService 之更新审批状态
  11. 解析 .Net Core 注入——注册服务
  12. CentOS7下安装MySQL5.7安装与配置
  13. DevExpress v18.1新版亮点——Data Access篇
  14. 【转载】 深度学习总结:用pytorch做dropout和Batch Normalization时需要注意的地方,用tensorflow做dropout和BN时需要注意的地方,
  15. python2与python3的区别(持续更新)
  16. 【转】topcoder插件配置(傻瓜教程-图文版)
  17. JS实现PC、Android、IOS端的点击按钮复制内容功能
  18. POJ 1082
  19. show global status和show variables mysql 优化
  20. Java并发编程基础

热门文章

  1. SQL注入和Mybatis预编译防止SQL注入
  2. SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter
  3. python 基础知识6-文件操作
  4. equals(), &quot;== &quot;,hashcode() 详细解释
  5. Spark aggregateByKey函数
  6. chrome &quot;items hidden by filters&quot;
  7. 数据结构----二叉树Tree和排序二叉树
  8. matlab第六章数据分析与多项式计算
  9. Python 字符串内置函数(四)
  10. 高效、可维护、组件化的CSS