1 条题解

  • 0
    @ 2025-2-14 21:20:40

    C++ :

    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int N(103);
    int f[N][N]={0},ACGT[6][6]={0},g[2][N]={0};
    int main()
    {
        for(int i=1;i<=5;i++)
            switch (i)
            {
                case 1: for(int j=1;j<=5;j++){int temp[6]={0,5,-1,-2,-1,-3};ACGT[i][j]=temp[j];}break;
                case 2: for(int j=1;j<=5;j++){int temp[6]={0,-1,5,-3,-2,-4};ACGT[i][j]=temp[j];}break;
                case 3: for(int j=1;j<=5;j++){int temp[6]={0,-2,-3,5,-2,-2};ACGT[i][j]=temp[j];}break;
                case 4: for(int j=1;j<=5;j++){int temp[6]={0,-1,-2,-2,5,-1};ACGT[i][j]=temp[j];}break;
                case 5: for(int j=1;j<=5;j++){int temp[6]={0,-3,-4,-2,-1,0};ACGT[i][j]=temp[j];}break;
            }
        int x(0);char y;
        int l1,l2;
        for(int i=0;i<2;i++)
        {
            cin>>x;
            if(i==0) l1=x;
            else l2=x;
            for(int j=1;j<=x;j++)
            {
                cin>>y;
                switch(y)
                {
                    case 'A': g[i][j]=1;break;
                    case 'C': g[i][j]=2;break;
                    case 'G': g[i][j]=3;break;
                    case 'T': g[i][j]=4;break;
                }
            }
        }
        for(int i=1;i<=l1;i++) f[i][0]=f[i-1][0]+ACGT[g[0][i]][5];
        for(int i=1;i<=l2;i++) f[0][i]=f[0][i-1]+ACGT[5][g[1][i]];
        for(int i=1;i<=l1;i++)
            for(int j=1;j<=l2;j++)
            {
                int x(g[0][i]),y(g[1][j]);
                f[i][j]=-100000;
                f[i][j]=max(f[i][j],f[i-1][j-1]+ACGT[x][y]);
                f[i][j]=max(f[i][j],f[i-1][j-1]+ACGT[x][5]+ACGT[y][5]);
                f[i][j]=max(f[i][j],f[i-1][j]+ACGT[x][5]);
                f[i][j]=max(f[i][j],f[i][j-1]+ACGT[y][5]);
            }
        cout<<f[l1][l2]<<endl;
        return 0;
    }
    
    • 1

    信息

    ID
    768
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者