hdu 1080 Human Gene Functions
2013-07-27 16:50
344 查看
动态规划!!!
View Code
#include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> #include<vector> #define ll __int64 #define pi acos(-1.0) #define MAX 50000 using namespace std; ll dp[202][202]; 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,-1000 }; int swaps(char a){ if (a=='A') return 0; if (a=='C') return 1; if (a=='G') return 2; if (a=='T') return 3; return 4; } string str1,str2; int main(){ int m,n,i,j,t,mmax,len1,len2,len; cin>>t; while (t--){ cin>>len1>>str1>>len2>>str2; len = max(len1,len2); dp[0][0]=0; for (i=1;i<=len1;i++){ dp[i][0] = dp[i-1][0] + score[swaps(str1[i-1])][4]; } for (i=1;i<=len2;i++){ dp[0][i] = dp[0][i-1] + score[4][swaps(str2[i-1])]; } for (i=1;i<=len1;i++) for (j=1;j<=len2;j++){ dp[i][j] = dp[i][j-1] + score[4][swaps(str2[j-1])]; if (dp[i][j] < dp[i-1][j]+score[swaps(str1[i-1])][4]) dp[i][j] = dp[i-1][j]+score[swaps(str1[i-1])][4]; if (dp[i][j] < dp[i-1][j-1]+score[swaps(str1[i-1])][swaps(str2[j-1])]) dp[i][j] = dp[i-1][j-1]+score[swaps(str1[i-1])][swaps(str2[j-1])]; } cout<<dp[len1][len2]<<endl; } return 0; }
View Code
相关文章推荐
- HDU 1080 Human Gene Functions
- hdu 1080 Human Gene Functions
- hdu 1080 Human Gene Functions 很霸气的DP
- HDU 1080 Human Gene Functions
- hdu 1080 Human Gene Functions 动态规划
- (DP)HDU 1080 Human Gene Functions
- hdu 1080 Human Gene Functions
- hdu 1080 dp Human Gene Functions
- hdu 1080 Human Gene Functions 动态规划
- HDU - 1080 Human Gene Functions DP
- hdu 1080 Human Gene Functions
- hdu 1080 Human Gene Functions
- hdu 1080 Human Gene Functions dp
- HDU 1080 Human Gene Functions 动态规划 + DFS
- hdu 1080 ;poj 1080 Human Gene Functions
- Hdu 1080 Human Gene Functions(DP)
- 【DP|LCS】HDU-1080 Human Gene Functions
- HDU 1080 Human Gene Functions 带权的最长公共子序列
- HDU 1080 Human Gene Functions(LCS变形)
- hdu-1080 Human Gene Functions