HDU 1080 DP
匹配两个人相似度。
A,G,C。T。每两个都会有一个相应的值,给出两串基因。长度能够不一样,能够在基因中间加_使两串长度一样。然后有一个相应值。求最大相应值。
先做出相应的表
DP方程:
x=dp[i-1][j-1]+hash[str_a[i-1]][str_b[j-1]];
y=dp[i-1][j]+hash[str_a[i-1]]['-'];
z=dp[i][j-1]+hash[str_b[j-1]]['-'];
p[i][j]=Max(x,y,z);
#include "stdio.h"
#include "string.h" int Max(int a,int b,int c)
{
int x;
x=a;
if (b>x) x=b;
if (c>x) x=c;
return x;
}
int main()
{
int Case,len_a,len_b,x,y,z,i,j;
int dp[110][110],hash[210][210];
char str_a[110],str_b[110]; hash['A']['A']=hash['C']['C']=hash['T']['T']=hash['G']['G']=5;
hash['A']['C']=hash['C']['A']=hash['A']['T']=hash['T']['A']=hash['-']['T']=hash['T']['-']=-1;
hash['A']['G']=hash['G']['A']=hash['C']['T']=hash['T']['C']=hash['G']['T']=hash['T']['G']=hash['-']['G']=hash['G']['-']=-2;
hash['A']['-']=hash['-']['A']=hash['C']['G']=hash['G']['C']=-3;
hash['C']['-']=hash['-']['C']=-4; scanf("%d",&Case);
while (Case--)
{
scanf("%d%s%d%s",&len_a,str_a,&len_b,str_b); // memset(dp,0,sizeof(dp));
dp[0][0]=0;
for (i=1;i<=len_a;i++)
dp[i][0]=dp[i-1][0]+hash['-'][str_a[i-1]];
for (i=1;i<=len_b;i++)
dp[0][i]=dp[0][i-1]+hash['-'][str_b[i-1]]; for (i=1;i<=len_a;i++)
for (j=1;j<=len_b;j++)
{
x=dp[i-1][j-1]+hash[str_a[i-1]][str_b[j-1]];
y=dp[i-1][j]+hash[str_a[i-1]]['-'];
z=dp[i][j-1]+hash[str_b[j-1]]['-'];
dp[i][j]=Max(x,y,z);
}
printf("%d\n",dp[len_a][len_b]);
}
return 0;
}
HDU 1080 DP的更多相关文章
- hdu 1080 dp(最长公共子序列变形)
题意: 输入俩个字符串,怎样变换使其所有字符对和最大.(字符只有'A','C','G','T','-') 其中每对字符对应的值如下: 怎样配使和最大呢. 比如: A G T G A T G - G ...
- DP问题(3) : hdu 1080
题目转自hdu 1080,题目传送门 题目大意: 不想翻译! 解题思路: 其实就是一道变异的求lcs(Longest common subsequence 最长公共子序列)的题 不过,它的依据是下面这 ...
- hdu 3016 dp+线段树
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- hdu 1080 Human Gene Functions(DP)
题意: 人类基因由A.C.G.T组成. 有一张5*5的基因表.每格有一个值,叫相似度.例:A-C:-3.意思是如果A和C配对, 则它俩的相似度是-3[P.S.:-和-没有相似度,即-和-不能配对] 现 ...
- HDU 1080
http://acm.hdu.edu.cn/showproblem.php?pid=1080 二维最长公共子序列 #include <iostream> #include <cstd ...
- HDU 1069 dp最长递增子序列
B - Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- HDU 1160 DP最长子序列
G - FatMouse's Speed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- hdu 4826(dp + 记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 思路:dp[x][y][d]表示从方向到达点(x,y)所能得到的最大值,然后就是记忆化了. #i ...
随机推荐
- DataTable转List<Model>通用类【实体转换辅助类】
/// <summary> /// DataTable转List<Model>通用类[实体转换辅助类] /// </summary> public class Mo ...
- Config配置文件详解
(默认的配置设置)以下所有的代码都应该位于 <configuration> <system.web> 和 </system.web> </configurat ...
- oc_转_NSInteger 和 NSNumber
Objective-C 支持的类型有两种:基本类型和类. 基本类型,如同 C 语言中的 int 类型一样,拿来就可以直接用.而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值.类的 ...
- Hadoop在百度的应用
百度作为全球最大的中文搜索引擎公司,提供基于搜索引擎的各种产品,包括以网络搜索为主的功能性搜索:以贴吧为主的社区搜索:针对区域.行业的垂直搜索.MP3音乐搜索,以及百科等,几乎覆盖了中文网络世界中所有 ...
- HDU-4737 A Bit Fun 维护
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4737 题意:给一个数列a0, a1 ... , an-1,令 f(i, j) = ai|ai+1|ai ...
- NotePad++ delphi/Pascal函数过程列表插件
从cnpack上爬下来的 函数过程列表 点击下载
- Java设计模式系列之策略模式
策略模式的定义: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换,策略模式让算法独立于使用它的客户而独立变化. 策略模式使这些算法在客户端调用它们的时候能够互不影响地变化 ...
- 启动程序的同时传参给接收程序(XE8+WIN764)
相关资料: http://blog.csdn.net/yanjiaye520/article/details/7590252 注意事项: 1.ParamStr(0)是实例自己. 2.传的参数是以空格分 ...
- Red5实现直播
http://pxchen.iteye.com/blog/714591 发布端(Publish): var nc:NetConnection = new NetConnection(); nc.con ...
- Local host name unknown: java.net.UnknownHostException:
在Linux下安装完resin后,每次启动都出现如下错误: [11:06:45.617] {watchdog-} WatchdogProcess[Watchdog[],7] starting Resi ...