题目大意:

两个字符串,可以再中间任何插入空格,然后让这两个串匹配,字符与字符之间的匹配有各自的分数,求最大分数

最长公共子序列模型。

dp[i][j]表示当考虑吧串1的第i个字符和串2的第j个字符时,当前的最大分数,当前有3中可能,

1,i与j直接匹配,那么这个状态是由dp[i-1][j-1]转移过来的.

2,i与空格匹配,那么j就要与i-1匹配了,由dp[i-1][j]转移过来。

3,j与空格匹配,那么i就要与j-1匹配了,由dp[i][j-1]转移过来。

dp的初始值,dp[i][0]与dp[0][i]分别表示串1和串2的第i个字符与空格匹配

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e9+;
const ll N=+;
ll dp[N][N];char s1[N],s2[N];
ll mp[N][N];
void inll()
{
mp['A']['A']= ;
mp['A']['C']=-;
mp['A']['G']=-;
mp['A']['T']=-;
mp['A'][] =-; mp['C']['A']=-;
mp['C']['C']= ;
mp['C']['G']=-;
mp['C']['T']=-;
mp['C'][] =-; mp['G']['A']=-;
mp['G']['C']=-;
mp['G']['G']= ;
mp['G']['T']=-;
mp['G'][] =-; mp['T']['A']=-;
mp['T']['C']=-;
mp['T']['G']=-;
mp['T']['T']= ;
mp['T'][] =-; mp[]['A']=-;
mp[]['C']=-;
mp[]['G']=-;
mp[]['T']=-;
}
void solve()
{
memset(dp,,sizeof dp);
ll n;
ll m;
cin>>n;
cin>>s1+;
cin>>m;
cin>>s2+;
for(ll i=;i<=n;i++) dp[i][]=dp[i-][]+mp[s1[i]][]; for(ll i=;i<=m;i++) dp[][i]=dp[][i-]+mp[][s2[i]]; for(ll i=;i<=n;i++)
{
for(ll j=;j<=m;j++)
{
dp[i][j]=max(dp[i-][j]+mp[s1[i]][],dp[i][j-]+mp[][s2[j]]);
dp[i][j]=max(dp[i-][j-]+mp[s1[i]][s2[j]],dp[i][j]);
}
}
cout<<dp[n][m]<<endl;
}
int main()
{
ios::sync_with_stdio();
inll();
ll t;
cin>>t;
while(t--) solve();
return ;
}

杭电1080 J - Human Gene Functions的更多相关文章

  1. 杭电20题 Human Gene Functions

    Problem Description It is well known that a human gene can be considered as a sequence, consisting o ...

  2. 【POJ 1080】 Human Gene Functions

    [POJ 1080] Human Gene Functions 相似于最长公共子序列的做法 dp[i][j]表示 str1[i]相应str2[j]时的最大得分 转移方程为 dp[i][j]=max(d ...

  3. POJ 1080:Human Gene Functions LCS经典DP

    Human Gene Functions Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18007   Accepted:  ...

  4. poj 1080 ——Human Gene Functions——————【最长公共子序列变型题】

    Human Gene Functions Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17805   Accepted:  ...

  5. poj 1080 Human Gene Functions(lcs,较难)

    Human Gene Functions Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19573   Accepted:  ...

  6. Human Gene Functions

    Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18053 Accepted: 1004 ...

  7. hdu1080 Human Gene Functions() 2016-05-24 14:43 65人阅读 评论(0) 收藏

    Human Gene Functions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  8. POJ 1080 Human Gene Functions -- 动态规划(最长公共子序列)

    题目地址:http://poj.org/problem?id=1080 Description It is well known that a human gene can be considered ...

  9. Human Gene Functions POJ 1080 最长公共子序列变形

    Description It is well known that a human gene can be considered as a sequence, consisting of four n ...

随机推荐

  1. django 之 Ajax and so on

    MTV与MVC(了解)

  2. CMDB_Agent_ssh版本分析

    目录 CMDB_Agent+ssh版本+server端 CMDB_Agent版本 CMDB概念 CMDB_Agent介绍 agent方案 ssh类方案 相比较 client端 架构目录 bin-sta ...

  3. angularJS表达式和指令

    主要是描述angularJS如何扩展html的:(模型后面会涉及) 例子1:通过指令来扩展html <body ng-app="myapp">  <!--  ng ...

  4. Android LinearLayout线性布局详解

    为了更好地管理Android应用的用户界面里的各组件,Android提供了布局管理器.通过使用布局管理器,Android应用图形用户界面具有良好的平台无关性.推荐使用布局管理器来管理组件的分布.大小, ...

  5. FME中矢量裁剪

  6. 渗透测试之Web安全

    写在前面: 渗透测试包含但不限于Web安全 渗透测试并不相当于Web渗透 Web安全学习是入门渗透测试最容易的途径,门槛最低 Web安全入门: 基础入门 整体框架 SQL注入 XSS攻击 业务逻辑漏洞 ...

  7. Gold30Mins

  8. python ——钟表

    1.表盘 from turtle import * from datetime import * def Skip(step):#表盘不连续地画图 penup() forward(step) pend ...

  9. E 比赛评分

    时间限制 : - MS   空间限制 : - KB  评测说明 : 1s,128m 问题描述 Lj​最近参加一个选秀比赛,有N个评委参加了这次评分,N是奇数.评委编号为1到N.每位评委给Lj​的分数是 ...

  10. CCF2018 12 2题,小明终于到家了

    最近在愁着备考,拿CCF刷题,就遇到这个难题,最后搜索了一下大佬们的方法,终于解决, 问题描述 一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间.同时,小明通过学校里安装 ...