HDU 1080 最长公共子序列变形
2012-09-01 20:41
323 查看
要注意i,j的下标是从1开始到n, m
在编码过程中,刚开始一直出错,后来发现初始少了两句
for(int i = 1; i <= n; i++)
dp[i][0] = dp[i-1][0] + r[a[i-1]][4];
for(int i = 1;i <= m; i++)
dp[0][i] = dp[0][i-1] + r[4][b[i-1]];
在编码过程中,刚开始一直出错,后来发现初始少了两句
for(int i = 1; i <= n; i++)
dp[i][0] = dp[i-1][0] + r[a[i-1]][4];
for(int i = 1;i <= m; i++)
dp[0][i] = dp[0][i-1] + r[4][b[i-1]];
#include <iostream> using namespace std; const int N = 101; int dp ; int max(int a, int b) { if(a > b) return a; else return b; } int main() { int t; cin >> t; int r[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} }; while(t--) { char str1 , str2 ; int a , b ; int n, m; cin >> n; cin >> str1; cin >> m; cin >> str2; for(int i = 0; i < n; i++) { switch(str1[i]) { case 'A': a[i] = 0; break; case 'C': a[i] = 1; break; case 'G': a[i] = 2; break; case 'T': a[i] = 3; break; case '-': a[i] = 4; break; default: a[i] = 0; } } for(int i = 0; i < m; i++) { switch(str2[i]) { case 'A': b[i] = 0; break; case 'C': b[i] = 1; break; case 'G': b[i] = 2; break; case 'T': b[i] = 3; break; case '-': b[i] = 4; break; default: b[i] = 0; } } //预处理完毕 //开始最长公共子序列 memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n; i++) dp[i][0] = dp[i-1][0] + r[a[i-1]][4]; for(int i = 1;i <= m; i++) dp[0][i] = dp[0][i-1] + r[4][b[i-1]]; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) dp[i][j] = max(dp[i-1] [j-1] + r[a[i-1]][b[j-1]], max(dp[i][j-1] + r[4][b[j-1]], dp[i-1][j] + r[a[i-1]] [4])); } cout << dp [m] << endl; } return 0; }
相关文章推荐
- HDU 1080 Human Gene Functions--DP--(最长公共子序列变形)
- Hdu 1080 Human Gene Functions(最长公共子序列的变形)
- HDU 1080 Human Gene Functions(最长公共子序列变形)
- hdu 1080 Human Gene Functions (LCS变形)
- hdu 1080 Human Gene Functions(类最长公共子序列)
- 最长公共子序列 HDU 1159/1080/1503
- HDU 1080 Human Gene Functions(LCS变形)
- HDU 1080 Human Gene Functions 带权的最长公共子序列
- HDU 1080 Human Gene Functions(LCS变形)
- hdu 1080 Human Gene Functions (LCS的变形)
- HDU 1243 反恐训练营(最长公共子序列的变形)
- hdu 1080 Human Gene Functions --- LCS问题变形
- HDU 1080 Human Gene Functions--DP--(变形最长公共子)
- hdu 1080 Human Gene Functions( 带权值的最长公共子序列)
- hdu 1080 Human Gene Functions (LCS变形)
- hdu 1080(LCS变形)
- HDU 1080 Human Gene Functions (DP,最长公共子序列)
- hdu 1503 Advanced Fruits(最长公共子序列变形)
- hdu 1080 (DP LCS最长公共子序列)
- hdu 1080 (DP LCS最长公共子序列)