POJ 1080 Human Gene Functions DP
2012-09-21 23:24
429 查看
题目就不解释了。
这里讲一下转移方程,dp[i][j](匹配到字符串1的i位,字符串2的j位)=MAX(dp[i-1][j-1]+score[a[i]][b[j]](i,j位匹配),dp[i-1][j]+score[a[i]][](i位和'-'匹配),dp[i][j-1]+score[b[j]][ ](j位和'-'匹配));
这里讲一下转移方程,dp[i][j](匹配到字符串1的i位,字符串2的j位)=MAX(dp[i-1][j-1]+score[a[i]][b[j]](i,j位匹配),dp[i-1][j]+score[a[i]][](i位和'-'匹配),dp[i][j-1]+score[b[j]][ ](j位和'-'匹配));
#include <iostream> #include <cstdio> #include <algorithm> #include <string> #include <cmath> #include <cstring> #include <queue> #include <set> #include <vector> #include <stack> #include <map> #include <iomanip> #define PI acos(-1.0) #define Max 105 #define inf 1<<28 #define LL(x) (x<<1) #define RR(x)(x<<1|1) using namespace std; int score[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 dp[Max][Max]; char str1[Max],str2[Max]; int MAX(int a,int b,int c) { return max(max(a,b),c); } int judge(char a) { if(a=='A') return 0; if(a=='C') return 1; if(a=='G') return 2; if(a=='T') return 3; if(a=='-') return 4; } int match(int la,int lb) { int i,j; for(i=1;i<=la;++i) dp[i][0]=dp[i-1][0]+score[judge(str1[i])][4]; for(i=1;i<=lb;++i) dp[0][i]=dp[0][i-1]+score[judge(str2[i])][4]; for(i=1;i<=la;i++) for(j=1;j<=lb;j++) { //1.str1[i]与str2[j]匹配 //2.str1[i]与"-"匹配 //3.str2[j]与"-"匹配 dp[i][j]=MAX(dp[i-1][j-1]+score[judge(str1[i])][judge(str2[j])],dp[i-1][j]+score[judge(str1[i])][4],dp[i][j-1]+score[judge(str2[j])][4]); } } int main() { int i,j,k,l,n,m; int l1,l2; scanf("%d",&n); while(n--) { scanf("%d%s",&l1,&str1[1]); scanf("%d%s",&l2,&str2[1]); match(l1,l2); cout<<dp[l1][l2]<<endl; } return 0; }
相关文章推荐
- POJ 1080-Human Gene Functions(DP:LCS变型)
- POJ 1080 Human Gene Functions (DP)
- poj 1080 Human Gene Functions DP
- POJ 1080 Human Gene Functions(DP:LCS)
- POJ 1080 Human Gene Functions DP
- POJ 1080 && HDU 1080 Human Gene Functions(dp)
- POJ 1080 Human Gene Functions(DP LCS)
- POJ 1080 Human Gene Functions(DP)
- POJ - 1080 Human Gene Functions (DP)
- 【poj 1080】Human Gene Functions DP(类最长公共子序列*)
- poj_1080 Human Gene Functions(dp)
- POJ-1080-Human Gene Functions-LCS变体,动态规划,DP
- POJ 1080 Human Gene Functions DP
- POJ 1080 Human Gene Functions DP
- Human Gene Functions poj 1080 dp
- POJ 1080 Human Gene Functions(dp)
- 【dp】POJ - 1080 Human Gene Functions
- POJ-1080- Human Gene Functions-DP-LCS变形
- POJ 1080 Human Gene Functions DP(LCS)
- poj 1080 Human Gene Functions(dp)