基因匹配问题
来源:互联网 发布:女主播直播软件 编辑:程序博客网 时间:2024/05/18 01:56
就是dp, 数据处理的时候要注意。而且状态转换用了只用了一个sim[2][m],节省了空间。再者就是转换的时候有权值,加上权值比较即可。
#include<cstdio>#include<cstdlib>#include<iostream>#include<algorithm>#include<vector>#include<cstring>using namespace std;char weight[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},};int LenA, LenB, i, j;int sum;bool Cur;char F[256];char Str[101];char GeneA[101], GeneB[101];short sim[2][101];inline short max(short A, short B){ return A > B ? A:B;} int main(){ F['A'] = 0; F['C'] = 1; F['G'] = 2; F['T'] = 3; scanf("%d",&sum); while(sum--) { scanf("%d %s",&LenA, &Str); for(i=0; i<LenA; i++) GeneA[i+1] = F[Str[i]]; scanf("%d %s", &LenB,&Str); for(i=0; i<LenB; i++) GeneB[i+1] = F[Str[i]]; sim[0][0] = 0; for(j=1; j<=LenB; j++) sim[0][j] = sim[0][j-1] + weight[4][GeneB[j]]; for(i=1, Cur=1; i<=LenA; i++,Cur =!Cur) { sim[Cur][0] = sim[!Cur][0] + weight[GeneA[i]][4]; for(j=1; j<=LenB; j++) { sim[Cur][j] = sim[!Cur][j-1] + weight[GeneA[i]][GeneB[j]]; sim[Cur][j] = max(sim[Cur][j], sim[Cur][j-1] + weight[4][GeneB[j]]); sim[Cur][j] = max(sim[Cur][j], sim[!Cur][j] + weight[GeneA[i]][4]); } } printf("%d\n", sim[!Cur][LenB]); } system("pause"); return 0;}
- 基因匹配问题
- LCS变形+基因匹配问题(1080)
- 基因序列相似性问题CCR版(KM模式匹配)
- DNA 基因的匹配
- 【AHOI2006】bzoj1264 基因匹配
- bzoj1264: [AHOI2006]基因匹配Match
- 1264: [AHOI2006]基因匹配Match
- BZOJ1264: [AHOI2006]基因匹配Match
- bzoj1264: [AHOI2006]基因匹配Match
- 基因匹配度计算 poj 1080
- dp+树状数组 bzoj1264 AHOI2006基因匹配
- AHOI 基因匹配 dp LCS LIS
- 【bzoj1264】【基因匹配Match】【dp+树状数组】
- ZOJ 1027 基因最大匹配值
- BZOJ 1264[AHOI 2006 基因匹配]
- BZOJ1264——[AHOI2006]基因匹配Match
- bzoj 1264: [AHOI2006]基因匹配Match
- bzoj 1264: [AHOI2006]基因匹配Match
- 卷积的物理意义
- 第五周实验报告(四)
- oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z
- AS3 自己写的一个2D游戏摄像机类,JCamera
- pgbench参数详解
- 基因匹配问题
- pgbench内置脚本
- main() { int a[3][3],*p,i; p=&a[1][1]; for(i=0;i<4;i++) p[i]=i+1; printf("%d\n",a[1][2]); } 求输出
- 今天刚刚对泛型有点了解
- linux的进程优先级处理方法
- 每次写日志都是一个心情
- typedef
- 让ubuntu下的eclipse支持GBK编码
- 字符编码的问题