• HDU 1080 DP


    匹配两个人相似度。

    A,G,C。T。每两个都会有一个相应的值,给出两串基因。长度能够不一样,能够在基因中间加_使两串长度一样。然后有一个相应值。求最大相应值。

    先做出相应的表

    DP方程:

    x=dp[i-1][j-1]+hash[str_a[i-1]][str_b[j-1]];
    y=dp[i-1][j]+hash[str_a[i-1]]['-'];
    z=dp[i][j-1]+hash[str_b[j-1]]['-'];
    p[i][j]=Max(x,y,z);


    #include "stdio.h"
    #include "string.h"
    
    int Max(int a,int b,int c)
    {
        int x;
        x=a;
        if (b>x) x=b;
        if (c>x) x=c;
        return x;
    }
    int main()
    {
        int Case,len_a,len_b,x,y,z,i,j;
        int dp[110][110],hash[210][210];
        char str_a[110],str_b[110];
    
        hash['A']['A']=hash['C']['C']=hash['T']['T']=hash['G']['G']=5;
        hash['A']['C']=hash['C']['A']=hash['A']['T']=hash['T']['A']=hash['-']['T']=hash['T']['-']=-1;
        hash['A']['G']=hash['G']['A']=hash['C']['T']=hash['T']['C']=hash['G']['T']=hash['T']['G']=hash['-']['G']=hash['G']['-']=-2;
        hash['A']['-']=hash['-']['A']=hash['C']['G']=hash['G']['C']=-3;
        hash['C']['-']=hash['-']['C']=-4;
    
        scanf("%d",&Case);
        while (Case--)
        {
            scanf("%d%s%d%s",&len_a,str_a,&len_b,str_b);
    
        //    memset(dp,0,sizeof(dp));
            dp[0][0]=0;
            for (i=1;i<=len_a;i++)
                dp[i][0]=dp[i-1][0]+hash['-'][str_a[i-1]];
            for (i=1;i<=len_b;i++)
                dp[0][i]=dp[0][i-1]+hash['-'][str_b[i-1]];
    
            for (i=1;i<=len_a;i++)
                for (j=1;j<=len_b;j++)
                {
                    x=dp[i-1][j-1]+hash[str_a[i-1]][str_b[j-1]];
                    y=dp[i-1][j]+hash[str_a[i-1]]['-'];
                    z=dp[i][j-1]+hash[str_b[j-1]]['-'];
                    dp[i][j]=Max(x,y,z);
                }
            printf("%d
    ",dp[len_a][len_b]);
        }
        return 0;
    }
    


  • 相关阅读:
    JSON.parse()和JSON.stringify()
    php结合layui实现前台加后台操作
    微信拨打电话功能
    视觉差效果
    前端开发面试题
    字符串分割--java中String.split()用法
    vue.js实现购物车功能
    localStorage使用总结
    canvas 实现赛车小游戏
    canvas 实现飞碟射击游戏
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5361101.html
Copyright © 2020-2023  润新知