hdu 1080 Human Gene Functions 线性dp
2015-10-26 23:01
363 查看
[code]#include<bits/stdc++.h> using namespace std; int a[128][128]; void init() { memset(a,0,sizeof(a)); a['A']['A']=5; a['A']['C']=-1; a['A']['G']=-2; a['A']['T']=-1; a['A']['-']=-3; a['C']['A']=-1; a['C']['C']=5; a['C']['G']=-3; a['C']['T']=-2; a['C']['-']=-4; a['G']['A']=-2; a['G']['C']=-3; a['G']['G']=5; a['G']['T']=-2; a['G']['-']=-2; a['T']['A']=-1; a['T']['C']=-2; a['T']['G']=-2; a['T']['T']=5; a['T']['-']=-1; a['-']['A']=-3; a['-']['C']=-4; a['-']['G']=-2; a['-']['T']=-1; } int main() { init(); int i,j,len1,len2,_,ans,dp[128][128]; char s1[128],s2[128]; scanf("%d",&_); while(_--) { scanf("%d",&len1); scanf("%s",s1); scanf("%d",&len2); scanf("%s",s2); memset(dp,0,sizeof(dp)); for(i=0;i<len1;i++) { dp[i+1][0]=dp[i][0]+a[s1[i]]['-']; } for(j=0;j<len2;j++) { dp[0][j+1]=dp[0][j]+a['-'][s2[j]]; } for(i=1;i<=len1;i++) for(j=1;j<=len2;j++) { dp[i][j]=max(dp[i][j-1]+a['-'][s2[j-1]],dp[i-1][j]+a[s1[i-1]]['-']); dp[i][j]=max(dp[i][j],dp[i-1][j-1]+a[s1[i-1]][s2[j-1]]); } printf("%d\n",dp[len1][len2]); } return 0; }
相关文章推荐
- IE与F兼容性的问题
- Apache Maven 入门篇 ( 下 )
- eclipse利用HibernateSynchronize自动生成代码
- 线程池
- 汇编语言实现冒泡排序算法
- 装饰者模式(Decorator Pattern)
- HDU 3172 Virtual Friends // 并查集,字典树
- OC整理
- 深入理解Java接口和抽象类
- Java开发所需架包官方下载
- 第一章 面向系统架构的系统工程
- 2015第44周一
- Apache Maven 入门篇 ( 上 )
- 第二百零七天 how can I坚持
- 痛迅企鹅修改版私密分享_版本不新但异常给力
- 23种设计模式
- HA 高可用
- 一类DP问题的分析(划分DP)
- 一致性哈希算法(consistent hashing)
- nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器