题目链接。

分析:

和 LCS 差不多。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <map>using namespace std;const int maxn = 200;int G[][5] = {{5, -1, -2, -1, -3},{-1, 5, -3, -2, -4},{-2, -3, 5, -2, -2},{-1, -2, -2, 5, -1},{-3, -4, -2, -1, 0}
};int dp[maxn][maxn];void trans(char *s, int n) {for(int i=0; i<n; i++) {switch(s[i]) {case 'A': s[i] = 0; break;case 'C': s[i] = 1; break;case 'G': s[i] = 2; break;case 'T': s[i] = 3; break;case '-': s[i] = 4; break;}}
}int main(){int T, n, m;//  freopen("my.txt", "r", stdin);char s1[maxn], s2[maxn];scanf("%d", &T);while(T--) {scanf("%d%s%d%s", &n, s1, &m, s2);trans(s1, n); trans(s2, m);dp[0][0] = 0;for(int i=1; i<=m; i++) dp[i][0] = G[s2[i-1]][4] + dp[i-1][0];for(int i=1; i<=n; i++) dp[0][i] = G[s1[i-1]][4] + dp[0][i-1];for(int i=1; i<=m; i++) {for(int j=1; j<=n; j++) {int u = s2[i-1], v = s1[j-1];dp[i][j] = dp[i-1][j-1] + G[u][v];dp[i][j] = max(dp[i][j], dp[i-1][j]+G[u][4]);dp[i][j] = max(dp[i][j], dp[i][j-1]+G[v][4]);}}printf("%d\n", dp[m][n]);}return 0;
}

转载于:https://www.cnblogs.com/tanhehe/p/3184762.html

POJ1080 Human Gene Functions(LCS)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. HDU 1080 Human Gene Functions

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

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

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

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

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

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

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

最新文章

  1. C#基础—不完整类型(局部类型)
  2. 深入理解javascript原型和闭包(1)——一切都是对象
  3. mysql别名的使用
  4. 33:计算分数加减表达式的值
  5. 像数据科学家一样思考:12步指南(下)
  6. 解决codeforces访问慢的问题
  7. SciPy 积分 | Python技能树征题
  8. 在Python中使用XGBoost和scikit-learn进行随机梯度增强
  9. 【C++】图书管理系统(含全部源代码)
  10. pytorch打包exe出现WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp\_MEI13
  11. 激光雷达点云的特征表达
  12. OSChina 周六乱弹 ——从心动,到原谅
  13. nginx配置ssl证书实现微信小程序后端接口访问
  14. 关于Retinex理论的一些理解
  15. springboot整合阿里云OSS存储(对象存储)图文详解-———入门操作指南。
  16. 【时间之外】几张图说清楚供应链金融赚钱方法
  17. Spring cloud alibaba--Feign微服务调用组件
  18. 分花生游戏 (博弈论)
  19. Leetcode PHP题解--D35 876. Middle of the Linked List
  20. android微信风格,微信主题太过简单?教你一键设置,多种风格自由切换

热门文章

  1. 模具设计:模具结构的推板顶出方法,建议收藏
  2. 网站交换友情链接的基本原则
  3. 外贸笔记-AQL抽样标准
  4. B2B,B2C,C2C,O2O,P2P的区别
  5. 无线局域网定义及原理
  6. 如何进行网页背景音乐的设置
  7. FFmpeg学习日记2
  8. 面向全程物流的智慧口岸建设实践 PPT
  9. windows搜不到特定wifi
  10. Presto RBO之 Sort算子优化