poj 1080 zoj 1027(最长公共子序列变种)
2013-08-15 18:03
267 查看
http://poj.org/problem?id=1080
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=27
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=27
/* zoj 1027 poj 1080 思路: 三种状态,取最大值: s1[i]和s2[j]配 :dp[i-1][j-1]+cost[my[s1[i]]][my[s2[j]]]; s1[i]和'-' 配: dp[i-1][j]+cost[my[s1[i]]][my['-']]; s2[j]和'-' 配: dp[i][j-1]+cost[my['-']][my[s2[j]]]; 注意边界: d[i][0]= cost[my[s1[i]]][my['-']]+dp[i-1][0]; 只能全部和'-'配, 同理: dp[0][j]=cost[my['-']][my[s2[j]]]+dp[0][j-1]; */ #include <iostream> #include <map> #include <cstring> #include <string> using namespace std; int cost[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,-100000005}}; int dp[1005][1005]; string s1,s2; map<char,int> my; int main(int argc, char *argv[]) { int t,i,n,j,m; my['A']=0; my['C']=1; my['G']=2; my['T']=3; my['-']=4; cin>>t; while(t--) { cin>>n>>s1>>m>>s2; s1='0'+s1; s2='0'+s2; dp[0][0]=0; for(i=1;i<=n;i++) dp[i][0]=cost[my[s1[i]]][my['-']]+dp[i-1][0]; for(j=1;j<=m;j++) dp[0][j]=cost[my['-']][my[s2[j]]]+dp[0][j-1]; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { int t1,t2,t3; t1=dp[i-1][j-1]+cost[my[s1[i]]][my[s2[j]]]; t2=dp[i-1][j]+cost[my[s1[i]]][my['-']]; t3=dp[i][j-1]+cost[my['-']][my[s2[j]]]; t1=max(t1,t2); t1=max(t1,t3); dp[i][j]=t1; } cout<<dp [m]<<endl; } return 0; }
相关文章推荐
- ZOJ 1027 Human Gene Functions(最长公共子序列)
- POJ 1080 动态规划(LCS变种)
- poj 1080 Human Gene Functions 动态规划(最长公共子序列)
- zoj 1733 || poj 1458 Common Subsequence(最长公共子序列)
- POJ 1080 Human Gene Functions -- 动态规划(最长公共子序列)
- POJ 1080 Human Gene Functions -- 动态规划(最长公共子序列)
- 【poj 1080】Human Gene Functions DP(类最长公共子序列*)
- Human Gene Functions POJ 1080 最长公共子序列变形
- POJ 1080(最长公共子序列)
- poj 1080 Human Gene Functions (最长公共子序列变形)
- poj 1080 ——Human Gene Functions——————【最长公共子序列变型题】
- POJ 1080 Human Gene Functions(最长公共子序列的特别版)
- POJ 3130 & ZOJ 2820 How I Mathematician Wonder What You Are!(半平面相交 多边形是否有核)
- POJ-1625 & ZOJ-1540 & Ural-1158 AC自动机+DP+大数..
- 北大POJ1159 Palindrome(动态规划求最长公共子序列)
- POJ 1027:The Same Game 较(chao)为(ji)复(ma)杂(fan)的模拟
- zoj 1094 poj 2246 Matrix Chain Multiplication(堆栈)
- 博弈题目合集(HDU,ZOJ,POJ)
- zoj 1149 && hdu 1059 && poj 1014 Dividing
- POJ 1080--Human Gene Function