ACM/ICPC 之 DP-基因相似度(POJ1080-ZOJ1027)
题意:两端基因片段,各有明确的碱基序列,现有一个碱基匹配的相似度数组,设计程序使得该相似度最大。
//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)的更多相关文章
- ACM/ICPC 之 DP解有规律的最短路问题(POJ3377)
//POJ3377 //DP解法-解有规律的最短路问题 //Time:1157Ms Memory:12440K #include<iostream> #include<cstring ...
- ACM/ICPC 之 DP进阶(51Nod-1371(填数字))
原题链接:填数字 顺便推荐一下,偶然看到这个OJ,发现社区运营做得很赞,而且交互和编译环境都很赞(可以编译包括Python,Ruby,Js在内的脚本语言,也可以编译新标准的C/C++11,甚至包括Go ...
- 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) ...
- 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 ...
- 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 ...
- 2017 ACM ICPC Asia Regional - Daejeon
2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...
- 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\)个白箱,将这 ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- 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 ...
随机推荐
- Mono资源
摘要 最近看了一部分mono方面的资料,这里整理一下,在这里列一个目录,方便以后用到的时候查找. Mono Mono 是一个由 Xamarin 公司(先前是 Novell,最早为 Ximian)所主持 ...
- Struts2 自定义拦截器
自定义拦截器(权限管理),包含了对ajax和表单请求的拦截 package com.interceptor; import java.io.IOException; import java.io.Pr ...
- XHTML的若干注意点
1.重要的兼容性提示: 你应该在 "/" 符号前添加一个额外的空格,以使你的 XHTML 与当今的浏览器相兼容. 2.XML对大小写敏感. 3.在 XHTML 中是不允许使用空标签 ...
- Java当中的内存分配以及值传递问题内存解析
首先必须说明作为Java程序员对于内存只要有大致的了解就可以了,如果你对Java当中的某一个知识点在不需要分析内存分配过程的情况下可以掌握,那就大可不必去研究内存.如果你对知识点已经掌握,那么你应该把 ...
- Teradata SQL programming
Teradata的SQL设计和Oracle真不是一个水平, 一点美感的没有. 上个世纪它靠着MPP一招鲜吃变天, 居然做了十多年数据仓库的老大, 时过境迁, 现在有不少SQL On Hadoop ...
- 2015年11月26日 Java基础系列(六)正则表达式Regex
package com.demo.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @autho ...
- data_quick 进度
20131118 加入xml对L8卫星波段控制: 纠正波段顺序 QVProc20131125.7z: 完成L8的增强 以后的程序会添加ZY3号解析模块 QVProc20131126.7z: 新增 粗 ...
- 使用Oracle ODP.NET 11g的.NET程序发布方法
使用Oracle ODP.NET 11g的.NET程序发布方法 内容摘要:ODP.NET 11g是Oracle发布的供.NET程序访问Oracle数据库的ADO.NET组件,比微软自带的Oracle组 ...
- CMake Error: your CXX compiler: "" was not found
[root@amax src]# cmake . -- The CXX compiler identification is unknown CMake Error at /usr/local/sha ...
- 如何使用java自定义注解?demo
1.Description.java package kzfy.bk.com; import java.lang.annotation.Documented; import java.lang.ann ...