zoukankan      html  css  js  c++  java
  • 题解 [HNOI2002]DNA分子的最佳比对 (洛谷P2268)

    题目传送门


    (这道题告诉我:初始化要小心)

    有没有一点最长公共子序列的赶脚(口胡)

    但我觉得挺像

     表示匹配到s1的第i位,s2的第j位,则有

    的初始化要注意:根据的含义,表示s1[i]一直在匹配空格(同理),所以要将初始化为

     上代码。。。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<iomanip>
    #define R register int
    using namespace std;
    char a[110],b[110];
    int f[110][110];
    
    inline int max(int a,int b) {return a>b?a:b;}
    
    int main()
    {
        scanf("%s%s",a+1,b+1);
        R la=strlen(a+1),lb=strlen(b+1);
        for(R i=1,x=-2;i<=la||i<=lb;i++,x-=2) f[0][i]=f[i][0]=x;
        f[0][0]=0;
        for(R i=1;i<=la;i++) for(R j=1;j<=lb;j++)
            f[i][j]=max(f[i-1][j]-2,max(f[i][j-1]-2,f[i-1][j-1]+(a[i]==b[j]?1:0)));
        printf("%d
    ",f[la][lb]);
        return 0;
    }

    如有错误,恳请您指正(我太菜了);如有不理解,可留言,我会尽量回复。。。(高中生(逃)。。)

    by Jackpei 2019.2.24

  • 相关阅读:
    sqlilabs 5
    sqlilabs 1-4
    ipset
    kill命令的使用
    docker 札记
    批量删除数据库表中数据行
    正则表达式调试
    TimescaleDB安装学习
    记一次 Centos7 postgresql v11 安装时序数据库 TimescaleDB
    "知识库"
  • 原文地址:https://www.cnblogs.com/Jackpei/p/10426595.html
Copyright © 2011-2022 走看看