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 ...
随机推荐
- XStream使用总结
最近做webService报文转换的公共接口使用到了XSream工具库,写个小总结备忘... XStream是一个可以将javaBean与XML双向转换的java类库,本文内容基于xstream-1. ...
- php页面防重复提交方法总结
1.提交按钮置disabled 当用户提交后,立即把按钮置为不可用状态.这种用js来实现. 提交前 复制代码 代码如下: $("#submit").attr('di ...
- ExtJS请求验证方法
//登录连接数据库验证 function loginCheck() { var UserName = Ext.getCmp("UserName").getValue(); var ...
- src 小心得
关于src的引用,不要用相对路径, ../ 虽然省事,但是跳转页面时容易出错. 举个例子: 在web页面引用 D:\phpStudy\WWW\ueditor\utf8-php 这个文件夹下面 ...
- xcode7 NSAppTransportSecurity
在Info.plist中添加 NSAppTransportSecurity 类型 Dictionary Dictionary 下添加 NSAllowsArbitraryLoads 类型 Bool ...
- SQL按指定文字顺序进行排序(中文或数字等)
在有些情况下我们需要按指定顺序输出数据,比如选择了ID in(3,1,2,5,4)我们希望按这个3,1,2,5,4的顺序输出,这样只使用order by ID是无法实现的, 但是我们可以使用order ...
- iOS开发——UI基础-UIScrollView
一.UIScrollView使用的步骤 1.创建UIScrollView 2.将需要展示的内容添加到UIScrollView中 3.设置UIScrollView的滚动范围 (contentSize) ...
- BZOJ1901——Zju2112 Dynamic Rankings
1.题目大意:区间第k小,有单点修改 2.分析:这个是树状数组套线段树,也是主席树....为什么主席树这么多QAQ 就是树套树的那种插入什么的,注意啊,一定要动态开内存..不然会爆.. 然后算答案有两 ...
- [BZOJ1691][Usaco2007 Dec]挑剔的美食家
[BZOJ1691][Usaco2007 Dec]挑剔的美食家 试题描述 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了. ...
- 28 GroupSock(NetAddress)——live555源码阅读(四)网络
28 GroupSock(NetAddress)——live555源码阅读(四)网络 28 GroupSock(NetAddress)——live555源码阅读(四)网络 简介 1) NetAddre ...