#include<iostream>
using namespace std;

char s1[105],s2[105];
int val[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,-1000000}};

int dp[105][105]; //dp[i][j]表示字符串i和j的最长公共子序列
int n,m;

int max(int a,int b)
{
return a>b?a:b;
}

int id(char c)
{
switch(c)
{
case 'A':
return 0;
break;

case 'C':
return 1;
break;

case 'G':
return 2;
break;

case 'T':
return 3;
break;
}
}

int fun()
{
int i,j;

memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
dp[i][0]=dp[i-1][0]+val[id(s1[i-1])][4];
for(j=1;j<=m;j++)
dp[0][j]=dp[0][j-1]+val[id(s2[j-1])][4];

for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
dp[i][j]=max(dp[i-1][j]+val[id(s1[i-1])][4],
max(dp[i][j-1]+val[id(s2[j-1])][4],dp[i-1][j-1]+val[id(s1[i-1])][id(s2[j-1])]));
return dp[n][m];
}

int main()
{
int T;

cin>>T;
while(T--)
{
cin>>n>>s1>>m>>s2;
cout<<fun()<<endl;
}
return 0;
}

最新文章

  1. OUTLOOK 发生错误0x8004010D
  2. 【BZOJ】2078: [POI2004]WYS
  3. matlab norm的使用
  4. 邮件发送服务AWS SES,Mailgun以及SendCloud(转)
  5. 线段相交 POJ 2653
  6. 有些ES6方法极简,但是性能不够好
  7. kmp算法:
  8. 第9章 使用客户端凭据保护API - Identity Server 4 中文文档(v1.0.0)
  9. java8_api_正则表达式
  10. Json常用组件
  11. 电力电子MATLAB
  12. Binary Analysis Tool安装使用教程
  13. 爬虫系列4:scrapy技术进阶之多页面爬取
  14. Java - 32 Java 多线程编程
  15. 分布式锁--Redis小试牛刀
  16. 一键用VS编译脚本
  17. eclipse中导入SVN项目步骤
  18. html5 初试 indexedDB
  19. Controller - 压力机的设置 - 界面图表分析
  20. api静态化预案

热门文章

  1. explain分析sql效果
  2. EntityFramework 学习 一 Migration from Entity Framework 4.1/4.3 to Entity Framework 5.0/6.0
  3. something important
  4. java的远程访问接口的实例
  5. Using SMOTEBoost(过采样) and RUSBoost(使用聚类+集成学习) to deal with class imbalance
  6. python基础-循环语句while
  7. Json解析方式
  8. SQL的CASE表达式用法
  9. Android: 一个两点触控的案例
  10. hdu Digital Square(广搜)