2019年12月下旬,武汉出现了多例不明原因的病毒性肺炎病例。之后,中国疾病预防控制中心确定此次致病的病原体为一种新的冠状病毒。1月12日,世界卫生组织将其命名为“2019新型冠状病毒(2019-nCoV)”。为了弄清新型冠状病毒的起源,中国疾控中心等机构的研究人员对住院患者的样本进行高通量测序,获得了完整和部分的2019-nCoV基因组序列。接着对这些2019-nCoV基因组和其他冠状病毒的基因组开展系统进化分析,以便确定这些病毒的进化史,帮助推断其可能的来源。

上述的研究就属于计算机和生物医学的交叉领域的相关研究,我们称之为生物信息学。在生物信息学中,我们以DNA为例说明基因序列的相似度研究。DNA (脱氧核糖核酸 )是生命体中主要的遗传物质 , 能将遗传信息由亲代传到子代. 它是一种线性 多聚脱氧核糖核苷酸 , 由碱基、戊糖及磷酸组成. 所有 DNA的主链均相同 , 只是腺嘌呤 (A)、鸟嘌呤(G)、胞嘧啶 (C)和胸腺嘧啶 (T)这 4种碱基的排列顺序不同. 不同生物体的 DNA具有自己独特的碱基顺序 , 遗传信息是由碱基顺序体现的 , 所以 , 进行 DNA序列的比较 (即观察 4种碱基在主链上的排列顺序 )是非常重要的. 通过比较不同物种的 DNA序列 , 得出其相似度 , 从而可以推断出物种间亲缘关系的远近.。

现在给你两个由AGCT四个字母构成的字符串,请你求出两个DNA序列的最长公共子序列。

输入格式:

两行,每行一个字符串,分别表示一个DNA序列(每个字符串长度不超过1000)。

输出格式:

一个数,最长公共子序列元素的个数。

输入样例:

在这里给出一组输入。例如:

AGCT
ATT

结尾无空行

输出样例:

在这里给出相应的输出。例如:

2

结尾无空行

分析:这道题是求最长公共子序列,注意不是最长公共子串。这两个是有去别的。例如ABCDEFG和ABCFGH。最长公共子序列是ABCFG,而最长公共子串是ABC。现在求两个串里的最长公共子序列。现在设两个串未X[n]={x1,x2,x3...xn}和Y[n]={y1,y2,y3....yn}。Z[n]用来存每个元素的最长公共子序列的值。

(1)如果X[n]==Y[n],则Z[n]=X[n]或者Z[n]=Y[n],那么“剩下的”最长公共子序列一定在X[n-1]和Y[n-1]中。

(2)如果X[n]!=Y[n],而Z[n]!=X[n]或者Z[n]!=Y[n],则最长公共子序列一定在X[n-1],Y[n]    和   X[n]和有Y[n-1]之间的较大值。

这个公式分析可能第一次比较不好懂,在读的同时,自己用笔写一下,画一下。读者可以再参考其他人写的,加深理解。

因为这里是从后往前推,最大值是Z[0]。

如果是从前往后推的话,最大值是Z[n]。而我是从前往后推。

代码如下:

#include<stdio.h>
#include<string.h>

int Max(int a, int b)
{
    return a > b ? a : b;
}
int main()
{
    int i, j;
        char a[1001] = { 0 }, b[1001] = { 0 };   
        int f[1001][1001] = { 0 };//这个元素的意义是X[i]和Y[j]之间的最长公共子序列
        gets(a);
        gets(b);
        int n = strlen(a);
        int m = strlen(b);
  
        for (i = 1; i <= n; i++)
        {
            for (j = 1; j <= m; j++)
            {
                if (a[i - 1] == b[j - 1])
                {
                    f[i][j] = f[i - 1][j - 1] + 1;
                }
                else
                {
                    f[i][j] = Max(f[i - 1][j], f[i][j - 1]);
                }
            }
        }
        printf("%d\n", f[n][m]);
    return 0;
}

请读者思考?答案为什么是f[n][m]?而不是f[n-1][m-1]?

PTA 2 新冠状病毒的基因序列(动态规划)相关推荐

  1. 新冠状病毒的基因序列

    2019年12月下旬,武汉出现了多例不明原因的病毒性肺炎病例.之后,中国疾病预防控制中心确定此次致病的病原体为一种新的冠状病毒.1月12日,世界卫生组织将其命名为"2019新型冠状病毒(20 ...

  2. 新冠状病毒显微放大品质背景,让你做相关项目更具专业性。

    如果你在做关于新冠状病毒项目研究或是宣传,是否为了专业性的图片素材而烦恼? 无论你是如何使用图片素材,它的作用是通过高度可视化,以最简洁直观的方式把想要表达的内容和信息传递出 去,这就是平面设计的目的 ...

  3. 从SARS、埃博拉到新冠状病毒,技术在革命中进步

    从去年年底一直到现在,疫情沸沸扬扬,科技向善带给我们福音.在这场悄无声息没有硝烟的战场上,除了为这场疫情贡献力量的每个人之外,科技也已经踏上了征途,帮助世界战胜疫情.  新冠状病毒 科技与人类专业知识 ...

  4. 新冠状病毒死亡率问题

    新冠状病毒死亡率问题 用python三种对于格式的控制方法输出 a = 81/2844 b = 100*a c = '%' print(f'{b:.2f}%') print('{:.2f}%'.for ...

  5. python爬取新冠状病毒实时数据,绘制各省份疫情地图

    想法: 偶然接触爬虫之后,想要试试爬取新冠状病毒的数据,但本人是编程小白,只能从网上寻找代码进行学习,在看过博主Hakuna_Matata_001的代码之后,可以说是将其默写出来了,然后加入了自己的一 ...

  6. 疫情地图制作--根据“天元浪子”大作学习制作全国新冠状病毒肺炎分布图

    疫情地图制作 –根据"天元浪子"大作学习制作全国新冠状病毒肺炎分布图 话不多说,直接贴博主"天元浪子"的帖子,记得给原文博主投票哈.' https://blog ...

  7. 靶向新冠状病毒(COVID-19)的药物靶点

    冠状病毒(Coronavirus, CoV)是自然界广泛存在一大类病毒家族.CoV为有包膜病毒,颗粒呈圆形或椭圆形,具有多形性,直径50-200nm.颗粒表面有棒状突起,使病毒表面看起来形如花冠,故而 ...

  8. 2019新冠状病毒学习笔记

    最近这波疫情,重现当年初中非典时期,甚至愈演愈烈,与之前初中时的封校住宿学习不同,已经工作的今天和太多的互联网信息大爆炸让我们有些焦虑,特别是,作为学习生物的人,我们也感到无能为力.官方媒体的科普,已 ...

  9. 新水果取名(动态规划,求两个子序列的最短原序列)

    题目内容: 两种水果杂交出一种新水果,现在给新水果取名,要求这个名字中包含以前两种水果的字母,且名字尽量短,即:以前的水果名字arr1.arr2是新水果名arr12的子序列,使用动态规划的思想设计算法 ...

最新文章

  1. php与html交互实现登录,php与html实现交互的基本操作
  2. 15-07-10 结构体-输入学生成绩进行排序
  3. 句柄 matlab_matlab 整车仿真
  4. php获取ios,IOS 通过描述获取UDID PHP代码版
  5. beanutils获取带参数get方法
  6. 微服务升级_SpringCloud Alibaba工作笔记0015---Nacos安装
  7. switch的处理方法
  8. maven 在pom.xml 中指定仓库位置
  9. how to get keyboard key with non blocking in terminal
  10. 高斯过程回归预测 C++代码实现
  11. 如何打开cmd窗口及一些常用Dos命令
  12. linux包含两种设备文件,在Linux系统中/dev的目录详解
  13. KingRoot换成Supersu的方法
  14. 什么是真正的转运?常见的五种转运方法
  15. java怎么画八卦图_自己画八卦图怎么画?电脑绘制八卦图|八卦图的简单画法
  16. 单点登录SSO(Single Sign On)
  17. 和菜鸟一起学android4.0.3源码之vibrator振动器移植心得
  18. vue 移动端头像裁剪_移动端 上传头像 并裁剪功能(h5)
  19. [网络工程师]-防火墙-入侵防护系统IPS
  20. 周慧敏张曼玉关之琳赵雅芝 风华绝代不畏岁月

热门文章

  1. 瑞吉外卖项目详细分析笔记及所有功能补充代码
  2. python利用proxybroker构建爬虫免费IP代理池!不用担心被封了!
  3. 荣耀笔记本自带linux软件,如何在荣耀笔记本(Linux 版)中拥有 deepin 应用商店?...
  4. 智能触觉驱动器市场现状及未来发展趋势
  5. 商业客流统计系统商场实际应用功能
  6. latent variable理解
  7. DiskGenius磁盘分区恢复文件全过程
  8. 视唱音准不好的人能练好吗,视唱音准不好怎么办
  9. COMODO Firewall Pro 免费防火墙试用手记
  10. P1603 斯诺登密码