DP,比较容易想到是2维DP,表示到第一个字符串的i和第二个字符串的j最大值是多少, 字符串下标的0在这里对应的i,j是1

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int INF=-(1<<29);
char s1[105], s2[105];
int dist[151][151], dp[105][105];
void init()
{dist['A']['A']=5;dist['A']['C']=dist['C']['A']=-1;dist['A']['G']=dist['G']['A']=-2;dist['A']['T']=dist['T']['A']=-1;dist['A']['-']=dist['-']['A']=-3;dist['C']['C']=5;dist['C']['G']=dist['G']['C']=-3;dist['C']['T']=dist['T']['C']=-2;dist['C']['-']=dist['-']['C']=-4;dist['G']['G']=5;dist['G']['T']=dist['T']['G']=-2;dist['G']['-']=dist['-']['G']=-2;dist['T']['T']=5;dist['T']['-']=dist['-']['T']=-1;
}
int main()
{int T, l1, l2, i, j, ti, tj, r1, r2;scanf("%d",&T);init();while(T--){scanf("%d%s%d%s",&l1,s1,&l2,s2);for(i=0;i<=l1;i++)for(j=0;j<=l2;j++)dp[i][j]=INF;dp[0][0]=0;for(i=0;i<l1;i++)dp[i+1][0]=dist[s1[i]]['-']+dp[i][0];for(i=0;i<l2;i++)dp[0][i+1]=dist['-'][s2[i]]+dp[0][i];for(i=0;i<l1;i++)for(j=0;j<l2;j++){ti=i+1, tj=j+1;dp[ti][tj]=max(dp[ti][tj],dp[ti-1][tj-1]+dist[s1[i]][s2[j]]);dp[ti][tj]=max(dp[ti][tj],dp[ti-1][tj]+dist[s1[i]]['-']);dp[ti][tj]=max(dp[ti][tj],dp[ti][tj-1]+dist['-'][s2[j]]);}printf("%d\n",dp[l1][l2]);}return 0;
}

转载于:https://www.cnblogs.com/ink-syk/p/3315142.html

HDU 1080 Human Gene Functions相关推荐

  1. POJ 1080 Human Gene Functions(DP:LCS)

    题意: 人类基因有两条,现在给出两个字符串,有长有短,可以在字符串中插入空格,要求对照表使两个字符串得出的相似值最大. 要点: 是LCS的变形,用dp[i][j]存储第一个字符串前i个字符与第二个字符 ...

  2. POJ - 1080 Human Gene Functions解题报告(求最长相同子序列)

    题目大意: 太长的英语,我就直接读了测试样例和题目中一些可以看的....好像是关于什么人类基因工程什么的, 腺嘌呤脱氧核糖核苷酸~ 每组测试实例给你两串由AGCT四个字母组成的字符串(每个字符串100 ...

  3. poj 1080 Human Gene Functions (最长公共子序列变形)

    题意:有两个代表基因序列的字符串s1和s2,在两个基因序列中通过添加"-"来使得两个序列等长:其中每对基因匹配时会形成题中图片所示匹配值,求所能得到的总的最大匹配值. 题解:这题运 ...

  4. Human Gene Functions(最长公共子序列变形题)

    [题目]:问题 B:  Human Gene Functions [来源]:点击打开链接 [解法]:这个题是最长公共子序列的变形题. 1.确定状态:状态表示显然是用二维数组表示DP[i][j]当前i和 ...

  5. 刷题总结——Human Gene Functions(hdu1080)

    题目: Problem Description It is well known that a human gene can be considered as a sequence, consisti ...

  6. 【HDU - 1080】Human Gene Functions(dp,可编辑距离类问题)

    题干: 给你两个DNA序列(长度不一定相同),你可以在其中任意位置上加入空格,使得最终他俩长度相同,最终相同长度的两个DNA序列会有个相似度比较(每个字符相对应的比较),问你如何放置这些空格使得总相似 ...

  7. 动态规划(DP),Human Gene Functions

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1027 http://poj.org/problem?id=108 ...

  8. POJ1080 Human Gene Functions 动态规划 LCS的变形

    题意读了半年,唉,给你两串字符,然后长度不同,你能够用'-'把它们补成同样长度,补在哪里取决于得分,它会给你一个得分表,问你最大得分 跟LCS非常像的DP数组 dp[i][j]表示第一个字符串取第i个 ...

  9. POJ1080 Human Gene Functions(LCS)

    题目链接. 分析: 和 LCS 差不多. #include <iostream> #include <cstdio> #include <cstdlib> #inc ...

最新文章

  1. 目标检测任务中的训练宝典 |实用技巧
  2. Python入门100题 | 第054题
  3. 安全行业中的event与incident区别
  4. Scala 语言输出的三种方式
  5. windows7旗舰版系统自带组件IIS搭建ftp
  6. JAVA ------- eclipse使用的步骤: %## 使用小技巧 ##%
  7. 让程序暂停几秒_如何构建一个简单的Python提醒应用程序
  8. 谨慎设计方法签名(40)
  9. [转载] Java:简述Java中的自定义异常
  10. 计算机还原默认的配置,每次开电脑bios会恢复默认设置怎么办实测解决
  11. 微信小程序云开发(云数据库的使用)
  12. 传奇客户端DATA文件详细说明
  13. 学习(一)C#利用窗体打开Excel文件进行正常访问和写入
  14. 大学的学习目标与期望
  15. Jetty篇教程 之Jetty 嵌入式服务器
  16. html div布局位置横,div位置布局 CSS实现DIV居中对齐 div居右对齐 div居左对齐
  17. 微信公众号获取AccessToken
  18. matlab与abaqus结构优化,基于MATLAB和ABAQUS的螺旋钻杆参数优化与数值模拟
  19. 仍开放线上?这些CS院校都是怎么想的?
  20. 相识如茶,相思似酒(转)

热门文章

  1. Cisco 3560 丢失 IOS 解决过程
  2. 区块链技术没那么复杂,别被大佬们忽悠晕了
  3. 【新浪上海】上海信息化建设进入新阶段 首席信息官联盟发挥重要作用
  4. PHP--------解决网址URL编码问题
  5. @SkipValidation跳过Struts2validation校验器
  6. 谈谈秒杀系统的落地方案
  7. Office 365系列(7)------ Exchange 2013与Office 365 Hybrid混合部署Step by Step参考
  8. 东软java实训第一个项目人力资源管理
  9. BCH首个Token奖励平台Honeypoints测试版已上线
  10. 多线程1.学习资料2.面试题3.知识点