zoukankan      html  css  js  c++  java
  • poj 3080 Blue Jeans

    链接:poj 3080

    题意:输入N个DNA序列,每一个DNA序列长度都为60。

    找到这些串的最长共同拥有子序列。

    :若找不到。或最长子序列长度小于2,则输出no significant commonalities,否则输出最长公共子串。若长度同样输出字典序最小的

    思路暴力枚举第一个DNA序列的每个子序列,用strstr()函数与其余的序列进行匹配

    strstr(s,t)是在s串中找t串,若找到,返回t串第一次在s中出现的首字符的地址。假设没有找到,返回NULL


    #include<stdio.h>
    #include<string.h>
    char t[65],ans[65];
    void cmp()
    {
        if(strlen(ans)<strlen(t))
            strcpy(ans,t);
        else if(strlen(ans)==strlen(t))
            if(strcmp(ans,t)>0)
                strcpy(ans,t);
    }
    int main()
    {
        int n,m,i,j,k,a;
        char s[12][65];
        scanf("%d",&n);
        while(n--){
            scanf("%d",&m);
            for(i=0;i<m;i++)
                scanf("%s",s[i]);
            ans[0]=0;
            for(i=0;i<60;i++){                //子串的起始位置为i
                k=0;
                for(j=i;j<60;j++){      
                    t[k++]=s[0][j];        //每次在前一个子串后加上一个字符
                    t[k]=0;               //记得在子串末尾加上空字符
                    for(a=1;a<m;a++)                 //推断其余字符串是否包括该子串
                        if(strstr(s[a],t)==NULL)     
                            break;
                    if(a==m)
                        cmp();
                }
            }
            if(strlen(ans)>=3)
                printf("%s
    ",ans);
            else
                printf("no significant commonalities
    ");
        }
        return 0;
    }


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Typescript和React结合项目初始化
    React 和 TypeScript 如何一起使用
    Cesium取代leaflet,和Vue等前端框架结合
    cesium之3dtiles的制作问题
    Cesium-3dTiles格式详解
    TIN和等高线的关系
    CAD如何生成等高线
    Cesium风场
    cesium加载等高线
    DEM坡度和坡向分析
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4676535.html
Copyright © 2011-2022 走看看