【编程题】(满分27分)

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

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

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

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

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

3. 重码,例如把 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

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <map>
#include <ctime>
#include <iomanip>
using namespace std;
const int INF=0x7ffffff;
const double EXP=1e-;
const int MS=;
typedef long long LL;
int dp[MS][MS]; int minv(int a,int b,int c)
{
return a>b?(b>c?c:b):(a>c?c:a); // min(a,min(b,c))
}
/*
ACT
ACTT dp[i][j]=dp[i][j-1]+1; ACTT
ACT dp[i][j]=dp[i-1][j]+1 丢失等效于增加 ACT
ACG dp[i][j]=d[i-1][j-1]+1 */ void solve(string &s1,string &s2)
{
int len1=s1.length();
int len2=s2.length();
for(int i=;i<=len1;i++)
dp[i][]=i;
for(int i=;i<=len2;i++)
dp[][i]=i;
for(int i=;i<=len1;i++)
{
for(int j=;j<=len2;j++)
{
if(s1[i-]==s2[j-])
dp[i][j]=dp[i-][j-];
else
{ // 增加 减少 修改
dp[i][j]=minv(dp[i][j-]+,dp[i-][j]+,dp[i-][j-]+);
}
}
}
cout<<dp[len1][len2]<<endl;
return ;
} int main()
{
int n;
string str1,str2;
cin>>n;
while(n--)
{
cin>>str1>>str2;
solve(str1,str2);
}
return ;
}

最新文章

  1. Day8-面向对象进阶&amp;&amp;socket基础
  2. Spring10种常见异常解决方法
  3. 剑指OFFER之反转链表(九度OJ1518)
  4. 初步boost之pool图书馆学习笔记
  5. (89c51)16x16点阵屏幕的实现
  6. 38. Count and Say - Unsolved
  7. TCP程序中发送和接收数据
  8. C语言学习(一)
  9. Exception in thread &quot;main&quot; org.I0Itec.zkclient.exception.ZkAuthFailedException: Authentication failure is thrown while creating kafka topic
  10. selenium跳过webdriver检测并爬取天猫商品数据
  11. Django表单字段汇总
  12. Codeforces963C Cutting Rectangle 【数学】
  13. USART相关问题
  14. python logging 日志模块的配置和使用
  15. xgboost 和GBDT的区别
  16. POJ 2763 Housewife Wind LCA转RMQ+时间戳+线段树成段更新
  17. 基于swoole扩展实现真正的PHP数据库连接池
  18. 【Java----判断字符串是否乱码】
  19. Mybatis 的输入参数学习
  20. Android启动屏全屏显示

热门文章

  1. 【暑假】[实用数据结构]UVa11995 I Can Guess the Data Structure!
  2. &lt;Araxis Merge&gt;Windows平台下的Merge概览
  3. ESXI安装
  4. Fast Intro To Java Programming (1)
  5. Codevs No.3147 矩阵乘法2
  6. Yii CModel中rules验证规则
  7. JavaFx版本植物大战僵尸
  8. fx-experience-tools
  9. 快速切换目录软件推荐——autojump
  10. POJ 1251 &amp;&amp; HDU 1301 Jungle Roads (最小生成树)