HDU 1080 Human Gene Functions
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相关推荐
- POJ 1080 Human Gene Functions(DP:LCS)
题意: 人类基因有两条,现在给出两个字符串,有长有短,可以在字符串中插入空格,要求对照表使两个字符串得出的相似值最大. 要点: 是LCS的变形,用dp[i][j]存储第一个字符串前i个字符与第二个字符 ...
- POJ - 1080 Human Gene Functions解题报告(求最长相同子序列)
题目大意: 太长的英语,我就直接读了测试样例和题目中一些可以看的....好像是关于什么人类基因工程什么的, 腺嘌呤脱氧核糖核苷酸~ 每组测试实例给你两串由AGCT四个字母组成的字符串(每个字符串100 ...
- poj 1080 Human Gene Functions (最长公共子序列变形)
题意:有两个代表基因序列的字符串s1和s2,在两个基因序列中通过添加"-"来使得两个序列等长:其中每对基因匹配时会形成题中图片所示匹配值,求所能得到的总的最大匹配值. 题解:这题运 ...
- Human Gene Functions(最长公共子序列变形题)
[题目]:问题 B: Human Gene Functions [来源]:点击打开链接 [解法]:这个题是最长公共子序列的变形题. 1.确定状态:状态表示显然是用二维数组表示DP[i][j]当前i和 ...
- 刷题总结——Human Gene Functions(hdu1080)
题目: Problem Description It is well known that a human gene can be considered as a sequence, consisti ...
- 【HDU - 1080】Human Gene Functions(dp,可编辑距离类问题)
题干: 给你两个DNA序列(长度不一定相同),你可以在其中任意位置上加入空格,使得最终他俩长度相同,最终相同长度的两个DNA序列会有个相似度比较(每个字符相对应的比较),问你如何放置这些空格使得总相似 ...
- 动态规划(DP),Human Gene Functions
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1027 http://poj.org/problem?id=108 ...
- POJ1080 Human Gene Functions 动态规划 LCS的变形
题意读了半年,唉,给你两串字符,然后长度不同,你能够用'-'把它们补成同样长度,补在哪里取决于得分,它会给你一个得分表,问你最大得分 跟LCS非常像的DP数组 dp[i][j]表示第一个字符串取第i个 ...
- POJ1080 Human Gene Functions(LCS)
题目链接. 分析: 和 LCS 差不多. #include <iostream> #include <cstdio> #include <cstdlib> #inc ...
最新文章
- 目标检测任务中的训练宝典 |实用技巧
- Python入门100题 | 第054题
- 安全行业中的event与incident区别
- Scala 语言输出的三种方式
- windows7旗舰版系统自带组件IIS搭建ftp
- JAVA ------- eclipse使用的步骤: %## 使用小技巧 ##%
- 让程序暂停几秒_如何构建一个简单的Python提醒应用程序
- 谨慎设计方法签名(40)
- [转载] Java:简述Java中的自定义异常
- 计算机还原默认的配置,每次开电脑bios会恢复默认设置怎么办实测解决
- 微信小程序云开发(云数据库的使用)
- 传奇客户端DATA文件详细说明
- 学习(一)C#利用窗体打开Excel文件进行正常访问和写入
- 大学的学习目标与期望
- Jetty篇教程 之Jetty 嵌入式服务器
- html div布局位置横,div位置布局 CSS实现DIV居中对齐 div居右对齐 div居左对齐
- 微信公众号获取AccessToken
- matlab与abaqus结构优化,基于MATLAB和ABAQUS的螺旋钻杆参数优化与数值模拟
- 仍开放线上?这些CS院校都是怎么想的?
- 相识如茶,相思似酒(转)
热门文章
- Cisco 3560 丢失 IOS 解决过程
- 区块链技术没那么复杂,别被大佬们忽悠晕了
- 【新浪上海】上海信息化建设进入新阶段 首席信息官联盟发挥重要作用
- PHP--------解决网址URL编码问题
- @SkipValidation跳过Struts2validation校验器
- 谈谈秒杀系统的落地方案
- Office 365系列(7)------ Exchange 2013与Office 365 Hybrid混合部署Step by Step参考
- 东软java实训第一个项目人力资源管理
- BCH首个Token奖励平台Honeypoints测试版已上线
- 多线程1.学习资料2.面试题3.知识点