poj1080 最长公子序列变形(注意初始化)
来源:互联网 发布:淘宝星级查询 编辑:程序博客网 时间:2024/04/27 18:23
刚拿到这道题目,不知道从何处下手,完全被'-'搞的不知道怎么办,其实和最长公子序列思维类似,只不过在两个序列长度分别为i,j时,有三种决策。还有就是此题目在初始化时与最长公子序列不同,比如上面的空了,那么下边的每一个剩余字母都要与'-'匹配,而且是一个累加值。
#include<iostream>
using namespace std;
int upnum,downnum;
char up[110];
char down[110];
int ls[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} };
int dp[110][110];
int max(int x,int y,int z)
{
int maxx;
if(x>y)
maxx=x;
else
maxx=y;
if(maxx<z)
return z;
else return maxx;
}
int trans(char x)
{
if(x=='A')
return 1;
if(x=='C')
return 2;
if(x=='G')
return 3;
if(x=='T')
return 4;
if(x=='-')
return 5;
}
int val(char a,char b)
{
int p=trans(a);
int q=trans(b);
return ls[p][q];
}
int main()
{
int T,i,j;
scanf("%d%*c",&T);
while(T-->0)
{
scanf("%d%*c",&upnum);
scanf("%s%*c",up);
scanf("%d%*c",&downnum);
scanf("%s%*c",down);
dp[0][0]=0;
for(i=1;i<=upnum;i++)
dp[i][0]=val(up[i-1],'-')+dp[i-1][0];
for(j=1;j<=downnum;j++)
dp[0][j]=val('-',down[j-1])+dp[0][j-1];
//某一串空了,则另一串所剩余的每一个字母都要与'-'匹配,而且是一个累加值。
for(i=1;i<=upnum;i++)
for(j=1;j<=downnum;j++)
dp[i][j]=max(dp[i-1][j-1]+val(up[i-1],down[j-1]),dp[i-1][j]+val(up[i-1],'-'),dp[i][j-1]+val('-',down[j-1]));
cout<<dp[upnum][downnum]<<endl;
}
system("pause");
return 0;
}
- poj1080 最长公子序列变形(注意初始化)
- (POJ1080)Human Gene Functions <DP,最长公共子序列变形>
- 最长公子序列
- 最长共公子序列
- poj1080(LCS变形)
- 【动态规划】最长公子序列 - dp
- 最长公子序列 Longest Common Subsequence
- 利用最长公子序列求回文字符串
- 【POJ1080】Human Gene Functions(动态规划 最长公共子序列)
- 【HDU】5256 序列变换(最长上升子序列变形)
- poj1080(LCS变形)
- poj1080——Human Gene Functions(LCS变形)
- Beautiful People (最长单调递增子序列(变形))
- Human Gene Functions(最长公共子序列变形题)
- poj1065(单调递增最长子序列变形)
- 导弹拦截(最长下降子序列)变形
- POJ 1836 Alignment LIS变形(最长上升子序列)
- nyist 16 矩形嵌套(最长上升子序列变形)
- MyEclipse发布项目更改项目名
- 计算机经典教材(计算机牛人的必由之路)
- 韩国一个机器视觉网站
- 感恩节的遐想
- 文件或目录损坏且无法读取的解决办法大集合
- poj1080 最长公子序列变形(注意初始化)
- 错误:/usr/share/man/windex: No such file or directory
- 编译内核
- HALCON.v8.0.2机器视觉软件
- NVIDIA GPU Computing Developer Home Page
- Fedora 服务器之 FTP 配置
- 百万级PHP网站架构工具箱
- 初学者适用的输出调试方法
- Mac配置Android开发环境变量及工具安装图