题目:https://www.luogu.org/problemnew/show/P1140

分析:

本题一看就知道是一道动归,其实和字串距离非常的像,只不过多了题目规定的匹配相似度罢了。

匹配的相似度我们之间用一个二维数组读入即可

int shuzu[6][6]={{0,0,0,0,0,0},{0,5,-1,-2,-1,-3},{0,-1,5,-3,-2,-4},{0,-2,-3,5,-2,-2},{0,-1,-2,-2,5,-1},{0,-3,-4,-2,-1,0}};

PS:换行效果更佳。

然后要把字符串转化成刚才数组中的下标,便于读写

int start(char c)
{
if(c=='A')return 1;
if(c=='C')return 2;
if(c=='G')return 3;
if(c=='T')return 4;
}

然后直接在主函数中调用即可

之后就是调用问题

for(int i=0;i<n;i++)
{
a[i+1]=start(s1[i]);
}
for(int j=0;j<m;j++)
{
b[j+1]=start(s2[j]);
}

其中s1,s2均为读入的字符串,我们把它们分别逐字符转化放入a,b数组。

然后由于有负值出现,我们需要把动归的核心方程初始化为一个极小的负数

for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
f[i][j]=-2147483647;
}
}

然后就是关键的动归核心部分了。

首先,看到数据范围:100

受到启发:二位数组开的起,再加上字串距离的引导,我们很容易想到f[i][j]f[i][j]f[i][j]可以表示第一个字符串的前i个字符与第二个字符串的前j个字符匹配的最大值。

状态想出来,那么方程如何转移呢?

根据可以加入空碱基,我们能想到

f[i][j]=max(f[i][j],f[i−1][j]+shuzu[a[i]][5],f[i][j−1]+shuzu[b[j]][5],f[i−1][j−1]+shuzu[a[i]][b[i]]f[i][j]=max(f[i][j],f[i-1][j]+shuzu[a[i]][5],f[i][j-1]+shuzu[b[j]][5],f[i-1][j-1]+shuzu[a[i]][b[i]]f[i][j]=max(f[i][j],f[i−1][j]+shuzu[a[i]][5],f[i][j−1]+shuzu[b[j]][5],f[i−1][j−1]+shuzu[a[i]][b[i]]

分别是s1串的最后一个字符对应一个空字符,s2串的最后一个字符对应一个空字符,s1串个s2串的最后一个字符直接对应。

显而易见的,初始化f数组就是

for(int i=1;i<=n;i++)f[i][0]=f[i-1][0]+shuzu[a[i]][5];
for(int i=1;i<=m;i++)f[0][i]=f[0][i-1]+shuzu[b[i]][5];

然后把它们拼凑起来,就完工喽!

完结撒花~

最新文章

  1. 预览github里面的网页或dome
  2. Dynamic CRM2016在一台本地服务器安装部署
  3. ReferenceQueue的使用
  4. linux常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)
  5. mysql问题Connection using old (pre-4.1.1) authentication protocol refused (client option &#39;secure_auth&#39; enabled)的解决方法
  6. js学习笔记一数字
  7. 扩展第三方DropDownMenu
  8. Android开发之控制Toast的开启与关闭
  9. 读取cc2530节点的设备类型、协调器、路由器、终端。
  10. Hopfield神经网络实现污染字体的识别
  11. laravel怎么创建一个简单的blog
  12. CSS float 属性
  13. SDWebImage 加载显示 WebP 与性能问题
  14. text和submit框的border问题
  15. adb -s 设备名 设备名还有非法字符
  16. 大数据环境完全分布式搭建 hadoop2.4.1
  17. ES6 函数
  18. Attr类型
  19. HTTP 错误 401.3 - Unauthorized asp.net mvc 图片,css,js没有权限访问
  20. POJ 2752 KMP中next数组的理解

热门文章

  1. SimpleMembership,成员资格提供程序、 通用的提供者和新的 ASP.NET 4.5 Web 窗体和 ASP.NET MVC 4 模板
  2. Ceph OpenSSL
  3. SqlServer 动态SQL(存储过程)中Like 传入参数无正确返回值的问题
  4. windows pyspider WEB显示框太小解决方法
  5. dubbo源码分析02:服务引用
  6. Ubuntu --- Virtualbox 和 宿主机文件夹共享
  7. never下sqlcient
  8. HBase —— 单机环境搭建
  9. 使用docker运行GitLab
  10. TCP/IP 第四、五章