• HDU1080 【LCS变形】


    题意:

    给你每种字符匹配的权值大小,给你两个串,长度小的串可以在小串里面添加空格和大串匹配,问你一个最大匹配权值。

    思路:

    有点类似于LCS吧,我们在求两个串的LCS的时候,不行的就扔掉了,在这里就是不行的就给他匹配了一个空格;

    dp[i][j-1]           j匹配空格;
    dp[i-1][j]           i匹配空格;
    dp[i-1][j-1]       i和j匹配;

    初始化
    dp[i][0]    i匹配空格
    dp[0][j]    j匹配空格


    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    typedef pair<int,int>PII;
    const double eps=1e-5;
    const double pi=acos(-1.0);
    const int INF=0x3f3f3f3f;
    int temp[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,0
    };
    
    int change(char x)
    {
        if(x=='A')
            return 0;
        if(x=='C')
            return 1;
        if(x=='G')
            return 2;
        if(x=='T')
            return 3;
        return 4;
    }
    
    int s1[110];
    int s2[110];
    int dp[110][110];
    char s[110];
    
    int main()
    {
        int len1,len2;
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%s",&len1,s+1);
    //        memset(dp,0,sizeof(dp));
            dp[0][0]=0;
    
            memset(s1,0,sizeof(s1));
            memset(s2,0,sizeof(s2));
            for(int i=1;i<=len1;i++)
            {
                s1[i]=change(s[i]);
                dp[i][0]=dp[i-1][0]+temp[s1[i]][4];
            }
            scanf("%d%s",&len2,s+1);
            for(int i=1;i<=len2;i++)
            {
                s2[i]=change(s[i]);
                dp[0][i]=dp[0][i-1]+temp[4][s2[i]];
            }
    
            for(int i=1;i<=len1;i++)
            {
                for(int j=1;j<=len2;j++)
                {
                    dp[i][j]=-INF;
                    dp[i][j]=max(dp[i][j],max(dp[i-1][j-1]+temp[s1[i]][s2[j]],max(dp[i-1][j]+temp[s1[i]][4],dp[i][j-1]+temp[4][s2[j]])));
                }
            }
    
            printf("%d
    ",dp[len1][len2]);
        }
        return 0;
    }
    
    


  • 相关阅读:
    iOS开发之MapKit
    iOS开发之代码截图
    iOS开发之CoreLocation(二)
    iOS开发之CoreLocation(一)
    iOS开发之静态库.a的制作
    iOS开发之通讯录 AddressBook
    iOS开发之ARC MRC混编
    iOS开发之蓝牙(一)GameKit
    java学习笔记之转换流
    iOS开发之蓝牙(二)CoreBluetooth
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777496.html
Copyright © 2020-2023  润新知