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

    poj 3080 PKU 3080 Blue Jeans(kmp)

    ?
    #include<stdio.h>
    #include<string.h>
    const int N=100;
    int n,m,next[N];
    char dna[N][N];
    void get_next(char *str,int len)
    {

    next[0]=-1;
    int j=0,k=-1;//k记录next[];

    while(j<len)
    {
    if(k==-1||str[j]==str[k])
    {
    k++;
    j++;
    if(str[k]!=str[j])
    next[j]=k;
    else next[j]=next[k];

    }
    else k=next[k];
    }
    }
    int kmp(char *s,int slen)
    {

    get_next(s,slen);
    int f=0,j,k,i;
    for(i=1;i<m;i++)
    {
    int k=0, j=0;
    int len=strlen(dna[i]);
    while(j<len&&k<slen)
    {
    if(k==-1||s[k]==dna[i][j])
    {
    j++;
    k++;
    }
    else k=next[k];
    }
    if(k<slen)break;

    }
    if(i==m)return 1;
    else return 0;
    }

    int main()
    {
    int i,j,k,sum,max=-1;
    char s[63],ans[63];
    scanf("%d",&n);
    while(n--)
    {
    max=-1;
    scanf("%d",&m);
    getchar();
    for(i=0;i<m;i++)
    {
    gets(dna[i]);
    }
    int len=strlen(dna[0]);

    for(i=0;i<len;i++)
    {
    for(j=i;j<len;j++)
    {
    sum=0;
    for(k=i;k<=j;k++)
    {
    s[sum++]=dna[0][k];
    }
    s[sum]='\0';
    if(kmp(s,sum)==1)
    {
    if(sum>max)
    {
    strcpy(ans,s);
    max=sum;
    }
    else
    {
    if(max==sum&&strcmp(ans,s)>0)
    {
    strcpy(ans,s);
    }
    }
    }
    }
    }
    if(max<3)printf("no significant commonalities\n");
    else printf("%s\n",ans);


    }

    }


    编辑器加载中...

  • 相关阅读:
    git安装和使用
    GitHub入门
    jmeter入门
    this关键字
    ES6函数
    代码雨
    this指向练习题
    a标签阻止默认跳转行为事件
    模板引擎的应用
    面向对象
  • 原文地址:https://www.cnblogs.com/acSzz/p/2398598.html
Copyright © 2011-2022 走看看