美文网首页
病毒感染监测

病毒感染监测

作者: 点一下我的id | 来源:发表于2018-12-24 10:12 被阅读0次

    病毒是环状,变成线性占用两倍长度
    http://www.bjfuacm.com/problem/256/

    
    #include<iostream>
    #include<string.h>
    #define MAXSIZE 10000
    using namespace std;
    int Match(char *s,char *t)
    {
        int n1=strlen(s)/2;
        int n2=strlen(t);
        //cout<<n1<<endl<<n2<<endl;
        for(int i=0,k,l,m,flag;i<n2;i++)
        {
            for(int j=0;j<n1;j++)
            {
                k=j;
                l=i;
                m=k+n1;
                flag=1;
                while(k!=m)
                {
                    if(s[k]!=t[l])
                    {
                        flag=0;
                        break;
                    }
                    k++;
                    l++;
                }
                if(flag==1)
                    return 1;
            }
        }
        return 0;
    }
    void fun(char *s)
    {
        int n=strlen(s);
        int i=0;
        s[2*n]=s[n];
        while(i!=n)
        {
            s[i+n]=s[i];
            i++;
        }
        //s[2*n]='\n';
    //    cout<<s<<strlen(s)<<endl;
    }
    void swap(char *s)
    {
        int n=strlen(s);
        for(int i=0;i<n/2;i++)
        {
            char temp=s[i];
            s[i]=s[n-i-1];
            s[n-1-i]=temp;
        }
        //cout<<s<<endl;
    }
    int main()
    {
        char s1[MAXSIZE],t[MAXSIZE],s2[MAXSIZE];
        while(cin>>s1>>t)
        {
            if(strcmp(t,"0")==0&&strcmp(s1,"0")==0)
                break;
            strcpy(s2,s1);
            fun(s1);
            if(Match(s1,t)==1)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
        }
    }
    

    病毒感染监测
    发布时间: 2017年9月18日 10:06 最后更新: 2017年9月18日 11:52 时间限制: 1000ms 内存限制: 128M

    描述
    医学研究者最近发现了某些新病毒,通过对这些病毒的分析,得知它们的DNA序列都是环状的。现在研究者收集了大量的病毒DNA和人的DNA数据,想快速检测出这些人是否感染了相应的病毒。为方便研究,研究者将人的DNA和病毒的DNA均表示成由一些小写字母组成的字符串,然后检测某种病毒的DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了病毒,否则没有感染。注意:人的DNA序列是线性的,而病毒的DNA序列是环状的。

    输入
    多组数据,每组数据有一行,为序列A和B,A对应病毒的DNA序列,B对应人的DNA序列。A和B都为“0”时输入结束。

    输出
    对于每组数据输出一行,若患者感染了病毒输出“YES”,否则输出“NO”。

    样例输入1
    abbab abbabaab
    baa cacdvcabacsd
    abc def
    0 0
    样例输出1
    YES
    YES
    NO

    相关文章

      网友评论

          本文标题:病毒感染监测

          本文链接:https://www.haomeiwen.com/subject/odyakqtx.html