zoukankan      html  css  js  c++  java
  • HDU 1080 Human Gene Functions (DP) by kuangbin

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1080

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    int dp[110][110];
    int Maxtri[5][5]=
    {
    {0,-3,-4,-2,-1},
    {-3,5,-1,-2,-1},
    {-4,-1,5,-3,-2},
    {-2,-2,-3,5,-2},
    {-1,-1,-2,-2,5}
    };
    int num1[110];
    int num2[110];
    int main()
    {
    // freopen("test.in","r",stdin);
    // freopen("test.out","w",stdout);
    int T;
    int n,m;
    char ch;
    scanf("%d",&T);
    while(T--)
    {
    scanf("%d",&n);
    getchar();
    for(int i=1;i<=n;i++)
    {
    scanf("%c",&ch);
    if(ch=='A') num1[i]=1;
    else if(ch=='C') num1[i]=2;
    else if(ch=='G') num1[i]=3;
    else if(ch=='T') num1[i]=4;
    }
    scanf("%d",&m);
    getchar();
    for(int i=1;i<=m;i++)
    {
    scanf("%c",&ch);
    if(ch=='A') num2[i]=1;
    else if(ch=='C') num2[i]=2;
    else if(ch=='G') num2[i]=3;
    else if(ch=='T') num2[i]=4;
    }
    dp[0][0]=0;
    for(int i=1;i<=n;i++) dp[i][0]=dp[i-1][0]+Maxtri[num1[i]][0];
    for(int i=1;i<=m;i++) dp[0][i]=dp[0][i-1]+Maxtri[0][num2[i]];
    for(int i=1;i<=n;i++)
    {
    for(int j=1;j<=m;j++)
    {
    dp[i][j]=max(dp[i-1][j-1]+Maxtri[num1[i]][num2[j]],max(dp[i-1][j]+Maxtri[num1[i]][0],dp[i][j-1]+Maxtri[0][num2[j]]));
    }
    }
    printf("%d\n",dp[n][m]);

    }
    }
  • 相关阅读:
    正则表达式入门
    Tyvj 1518 CPU监控——极恶线段树
    数据结构-元组
    洛谷P3195 玩具装箱TOY
    数据结构-列表基本语法
    P2569 股票交易
    列表循环
    P3507 GRA-The Minima Game
    数据结构-集合
    洛谷P1595 信封问题
  • 原文地址:https://www.cnblogs.com/kuangbin/p/2262268.html
Copyright © 2011-2022 走看看