【Hdu】1080 Human Gene Functions
2015-07-07 22:35
295 查看
#include <cstdio> #include <cstring> #include <cstdlib> using namespace std; //A:0 C:1 G:2 T:3 -:4 const int g[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,-1121}; const int L=120; const int M=-100000000; char s[L],t[L]; int ls,lt; int cs[L],ct[L],f[L][L]; inline int find(char a) { if (a=='A') return 0; if (a=='C') return 1; if (a=='G') return 2; if (a=='T') return 3; return 4; } inline int max(int i,int j) { return i>j?i:j; } int main(void) { int cas; scanf("%d",&cas); for (int cc=1;cc<=cas;cc++) { scanf("%d%s%d%s",&ls,&s[1],<,&t[1]); for (int i=1;i<=ls;i++) cs[i]=find(s[i]); for (int i=1;i<=lt;i++) ct[i]=find(t[i]); for (int i=0;i<=ls;i++) for (int j=0;j<=lt;j++) f[i][j]=M; f[0][0]=0; for (int i=1;i<=ls;i++) f[i][0]=f[i-1][0]+g[cs[i]][4]; for (int j=1;j<=lt;j++) f[0][j]=f[0][j-1]+g[4][ct[j]]; for (int i=1;i<=ls;i++) for (int j=1;j<=lt;j++) { f[i][j]=max(f[i-1][j]+g[cs[i]][4],f[i][j-1]+g[4][ct[j]]); f[i][j]=max(f[i][j],f[i-1][j-1]+g[cs[i]][ct[j]]); } printf("%d\n",f[ls][lt]); } return 0; }
相关文章推荐
- Qt中main函数详解
- Java&Scala混合编程
- Android TextView内容过长加省略号
- 数据库性能优化二:数据库表优化
- AspNet WebApi 中应用fo-dicom抛出异常:No codec registered for tranfer syntax:
- PSSM特征-从生成到处理
- Android控件之ViewStub的使用技巧
- IE8不显示字体图标
- mysql中的replace into
- 开始学习iOS开发
- SwitchSharp代理插件的安装和使用
- 【spring源码分析】--Bean的解析与注册
- mybatis最好用的分页插件
- 数据库性能优化一:数据库自身优化(大数据量)
- WebAPI中路由参数中包含字符-点‘.’, 比如:http://localhost:30695/api/studies/1.1.1.1.1
- Chrome书签整理
- if语句之有房么?有钱么?有能力么?
- iOS 本地存储四种方法
- Servlet--HttpServletRequest一些不常用的方法
- 漂亮的Qt控件 QSS代码例子