【POJ 1080】 Human Gene Functions
2015-08-17 13:00
281 查看
【POJ 1080】 Human Gene Functions
类似于最长公共子序列的做法
dp[i][j]表示 str1[i]对应str2[j]时的最大得分
转移方程为
dp[i][j]=max(dp[i-1][j-1]+score[str1[i]][str2[j]],
max(dp[i-1][j]+score[str1[i]][‘-‘],dp[i][j-1]+score[‘-‘][str2[j]]) )
注意初始化0下标就好
代码如下:
类似于最长公共子序列的做法
dp[i][j]表示 str1[i]对应str2[j]时的最大得分
转移方程为
dp[i][j]=max(dp[i-1][j-1]+score[str1[i]][str2[j]],
max(dp[i-1][j]+score[str1[i]][‘-‘],dp[i][j-1]+score[‘-‘][str2[j]]) )
注意初始化0下标就好
代码如下:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int dp[101][101]; char a[102],b[102]; int sc['Z'+1]['Z'+1]; int main() { int t,aa,bb,i,j; scanf("%d",&t); sc['A']['A'] = sc['C']['C'] = sc['G']['G'] = sc['T']['T'] = 5; sc['A']['C'] = sc['C']['A'] = sc['A']['T'] = sc['T']['A'] = sc['T']['-'] = -1; sc['G']['A'] = sc['A']['G'] = sc['C']['T'] = sc['T']['C'] = sc['G']['T'] = sc['T']['G'] = sc['G']['-'] = -2; sc['A']['-'] = sc['C']['G'] = sc['G']['C'] = -3; sc['C']['-'] = -4; while(t--) { scanf("%d %s %d %s",&aa,a+1,&bb,b+1); dp[0][0] = 0; for(i = 1; i <= bb; ++i) dp[0][i] = sc[b[i]]['-'] + dp[0][i-1]; for(i = 1; i <= aa; ++i) dp[i][0] = sc[a[i]]['-'] + dp[i-1][0]; for(i = 1; i <= aa; ++i) { for(j = 1; j <= bb; ++j) { dp[i][j] = max(dp[i-1][j-1] + sc[a[i]][b[j]],max(dp[i-1][j] + sc[a[i]]['-'],dp[i][j-1] + sc[b[j]]['-'])); } } printf("%d\n",dp[aa][bb]); } return 0; }
相关文章推荐
- 前端手札--meta标记篇
- 不懂技术,如何加密视频图片?
- cisco 动态路由RIP配置
- hdu 5301 Buildings 2015 Multi-University Training Contest 2
- 最大子列和问题
- Java Web应用程序:Oozie及其使用方式
- 翻译:AKKA笔记 - Actor消息 -1(一)
- iOS7 UIKit动力学-碰撞特性UICollisionBehavior 上
- Java集合---Set
- Java虚拟机详解03----常用JVM配置参数
- 正则表达式全部符号解
- linux目录结构
- java的.jar包在eclipse下的源码关联
- 卡内基梅隆大学(CMU)的Eric Xing(邢波)教授为什么能读完一般学校的分子生物学PhD后到伯克利去CS PhD?
- Ubnutu SecureCRT 下载并破解
- 从零搭建 repo 服务器
- 文件输入输出编程
- 在线求中位数(优先队列实现) POJ3784
- UVA12493 - Stars(求1-N与N互质的个数)欧拉函数
- 第一天 Java概述