hdu1080(最长公共子序列变形)
来源:互联网 发布:二维数组整体排序java 编辑:程序博客网 时间:2024/05/22 02:14
给定一个相似性矩阵
给定两个基因序列(由AGCT组成),填充空格‘ ’,使得相似性分数最高
状态转移,其中dp[i,j]表示s1[i]和s2[j]处能取到的最大分数(i=1,2,3...len1,j=1,2,3,..,len2)
dp[i,j]=max(max(dp[i-1,j-1]+table[i,j],dp[i,j-1]+table[i]['-']),dp[i-1,j]+table['-'][j])
注意初始化
for(int i=1;i<=l1;i++) dp[i][0]=dp[i-1][0]+table[t1[i]][4]; for(int i=1;i<=l2;i++) dp[0][i]=dp[0][i-1]+table[4][t2[i]];
代码
#include <iostream>#include <stdio.h>using namespace std;const int maxn=105;int table[5][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 transfer(char c){ if(c=='A')return 0; if(c=='C')return 1; if(c=='G')return 2; if(c=='T')return 3; return 4;}int main(){ //freopen("in.txt","r",stdin); char s1[maxn],s2[maxn]; int t1[maxn],t2[maxn]; int dp[maxn][maxn]; int l1,l2; int T; scanf("%d",&T); while(T--){ //dp[0][0]=dp[1][0]=dp[0][1]=0; scanf("%d ",&l1); for(int i=1;i<=l1;i++){ scanf("%c",&s1[i]); t1[i]=transfer(s1[i]); } scanf("%d ",&l2); for(int i=1;i<=l2;i++){ scanf("%c",&s2[i]); t2[i]=transfer(s2[i]); } dp[0][0]=0; for(int i=1;i<=l1;i++) dp[i][0]=dp[i-1][0]+table[t1[i]][4];//注意开头是可以填空格的 for(int i=1;i<=l2;i++) dp[0][i]=dp[0][i-1]+table[4][t2[i]]; for(int i=1;i<=l1;i++){ for(int j=1;j<=l2;j++){ dp[i][j]=max(dp[i-1][j-1]+table[t1[i]][t2[j]],max(dp[i-1][j]+table[t1[i]][4],dp[i][j-1]+table[4][t2[j]])); } } printf("%d\n",dp[l1][l2]); } return 0;}
0 0
- hdu1080(最长公共子序列变形)
- hdu1080 - Human Gene Functions 最长公共子序列推广
- hdu1080 Human Gene Functions(带权值最长公共子序列)
- HDU 1080 最长公共子序列变形
- hdu 1238(最长公共子序列变形)
- hdu 1238(最长公共子序列变形)
- hdu4512(最长上升公共子序列变形)
- hdu5282 最长公共子序列的变形
- poj1159Palindrome(LCS最长公共子序列变形)
- 【HDU1080 DP】类似最长公共子串
- hdu1080(带权值最长上升子序列)
- Human Gene Functions(最长公共子序列变形题)
- hdu 1503 Advanced Fruits(最长公共子序列变形)
- DP专辑之最长公共子序列及其变形
- hdoj 1503 Advanced Fruits 【最长公共子序列 变形】
- poj 2250 Compromise 【最长公共子序列变形】
- UVA 10723--Cyborg Genes+最长公共子序列变形
- 比较好的最长公共子序列的变形
- 盘点六款逆天级效率工具,能帮创业公司节省50%时间成本
- 实现JavaScript中继承的三种方式
- 并查集
- leetcode 258- Add Digits
- MTK平台ATA测试LCM出现Not Support
- hdu1080(最长公共子序列变形)
- Android IntentService完全解析 当Service遇到Handler
- Java线程与Linux内核线程的映射关系
- 模拟SpringMvc的实现(一)
- “区块链”究竟是什么鬼
- 异常
- 在页面中引入百度地图API的步骤以及Geolocation简单的使用
- Mybaits 数据库的 CLOB 类型 与 java 类型 String
- Android SurfaceView实战 带你玩转flabby bird (上)