题意:两端基因片段,各有明确的碱基序列,现有一个碱基匹配的相似度数组,设计程序使得该相似度最大。


 //POJ1080-ZOJ1027
//题解:将s1碱基和s2碱基看做等长,添加一个碱基为'-',即每次都将上下碱基相互匹配后再和'-'匹配,找到最优解即可
//即分为三种状态:
// 1.s1[i]和s2[j]匹配
// 2.s1[i]和 '-' 匹配
// 3. '-' 和s2[j]匹配
#include <iostream>
#include <cstdio>
#include <map>
using namespace std; #define MAX 105
#define max(x,y) ((x)>(y)?(x):(y)) char s1[MAX], s2[MAX];
int len1, len2;
int dp[MAX][MAX]; //dp[i][j]:s1基因的前i个碱基和s2基因的前j个碱基中的最优匹配解 map<char, int> gene; //碱基和adjust下标一一映射
int adjust[][] = { {,-,-,-,-},
{-,,-,-,-},
{-,-,,-,-},
{-,-,-,,-},
{-,-,-,-,}}; int main()
{
int T;
scanf("%d", &T); gene['A'] = ; gene['C'] = ;
gene['G'] = ; gene['T'] = ;
gene['-'] = ; while (T--)
{
scanf("%d %s", &len1, s1);
scanf("%d %s", &len2, s2); memset(dp, , sizeof(dp)); for (int i = ; i <= len1; i++)
dp[i][] = dp[i-][] + adjust[gene[s1[i - ]]][gene['-']]; //上碱基各碱基仅匹配'-'时
for (int j = ; j <= len2; j++)
dp[][j] = dp[][j-] + adjust[gene['-']][gene[s2[j - ]]]; //下碱基各碱基仅匹配'-'时 for (int i = ; i <= len1; i++)
for (int j = ; j <= len2; j++)
{
dp[i][j] = max(dp[i][j - ] + adjust[gene['-']][gene[s2[j - ]]],
dp[i - ][j] + adjust[gene[s1[i - ]]][gene['-']]); //上下碱基各匹配'-'时
dp[i][j] = max(dp[i][j], dp[i - ][j - ] + adjust[gene[s1[i - ]]][gene[s2[j - ]]]); //上下碱基相互配对时
}
printf("%d\n", dp[len1][len2]);
} return ;
}

ACM/ICPC 之 DP-基因相似度(POJ1080-ZOJ1027)的更多相关文章

  1. ACM/ICPC 之 DP解有规律的最短路问题(POJ3377)

    //POJ3377 //DP解法-解有规律的最短路问题 //Time:1157Ms Memory:12440K #include<iostream> #include<cstring ...

  2. ACM/ICPC 之 DP进阶(51Nod-1371(填数字))

    原题链接:填数字 顺便推荐一下,偶然看到这个OJ,发现社区运营做得很赞,而且交互和编译环境都很赞(可以编译包括Python,Ruby,Js在内的脚本语言,也可以编译新标准的C/C++11,甚至包括Go ...

  3. 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp

    QSC and Master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  4. 2016 ACM/ICPC Asia Regional Shenyang Online 1007/HDU 5898 数位dp

    odd-even number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  5. HDU 5000 2014 ACM/ICPC Asia Regional Anshan Online DP

    Clone Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other) Total Submiss ...

  6. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...

  7. 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest

    2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest A - Arranging Wine 题目描述:有\(R\)个红箱和\(W\)个白箱,将这 ...

  8. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛

    比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...

  9. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering

    Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...

随机推荐

  1. Mono资源

    摘要 最近看了一部分mono方面的资料,这里整理一下,在这里列一个目录,方便以后用到的时候查找. Mono Mono 是一个由 Xamarin 公司(先前是 Novell,最早为 Ximian)所主持 ...

  2. Struts2 自定义拦截器

    自定义拦截器(权限管理),包含了对ajax和表单请求的拦截 package com.interceptor; import java.io.IOException; import java.io.Pr ...

  3. XHTML的若干注意点

    1.重要的兼容性提示: 你应该在 "/" 符号前添加一个额外的空格,以使你的 XHTML 与当今的浏览器相兼容. 2.XML对大小写敏感. 3.在 XHTML 中是不允许使用空标签 ...

  4. Java当中的内存分配以及值传递问题内存解析

    首先必须说明作为Java程序员对于内存只要有大致的了解就可以了,如果你对Java当中的某一个知识点在不需要分析内存分配过程的情况下可以掌握,那就大可不必去研究内存.如果你对知识点已经掌握,那么你应该把 ...

  5. Teradata SQL programming

    Teradata的SQL设计和Oracle真不是一个水平, 一点美感的没有.  上个世纪它靠着MPP一招鲜吃变天, 居然做了十多年数据仓库的老大,  时过境迁, 现在有不少SQL On Hadoop ...

  6. 2015年11月26日 Java基础系列(六)正则表达式Regex

    package com.demo.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @autho ...

  7. data_quick 进度

    20131118  加入xml对L8卫星波段控制: 纠正波段顺序 QVProc20131125.7z: 完成L8的增强 以后的程序会添加ZY3号解析模块 QVProc20131126.7z: 新增 粗 ...

  8. 使用Oracle ODP.NET 11g的.NET程序发布方法

    使用Oracle ODP.NET 11g的.NET程序发布方法 内容摘要:ODP.NET 11g是Oracle发布的供.NET程序访问Oracle数据库的ADO.NET组件,比微软自带的Oracle组 ...

  9. CMake Error: your CXX compiler: "" was not found

    [root@amax src]# cmake . -- The CXX compiler identification is unknown CMake Error at /usr/local/sha ...

  10. 如何使用java自定义注解?demo

    1.Description.java package kzfy.bk.com; import java.lang.annotation.Documented; import java.lang.ann ...