病毒感染监测

#include<iostream>
#include<string>
#include<cstring>
using namespace std;//s的第一个字符和t比较,不相等就和第二个比较,如果一旦有不相等的就继续比较,设置一个标记,如果一直没有就更新一下s的顺序

void change(string &s,int &count)
{
    int length;
    length = s.size();
    char a = s[0];
    for (int i = 1; i < length; i++)
    {
        s[i - 1] = s[i];
    }
    s[length - 1] = a;
    count++;
}
bool Judge(string s, string t)
{
    int flag=0;
    int count=0;//当count比s的长度大的时候,如果依然没找到就输出no;
    int length = s.size();
    int ll = t.size();
    while (1)
    {
            int i=0, j = 0;
            int tt = 0;
            while (j!=ll)
            {
                if (s[i] == t[j])
                {
                    i++;
                    j++;
                    if (i-1== 0)
                    {
                        tt = j-1;
                        continue;
                    }
                    if (i-1== length - 1)
                    {
                        flag = 1;
                        break;
                    }
                }
                else
                    if (s[i] != t[j])
                    {
                        if (i == 0)
                        {
                            j++;
                            continue;
                        }
                        else  
                            if (i != 0)
                            {
                                i = 0;
                                j = tt + 1;
                                continue;
                            }
                    }
            }
            if (flag == 1)
                break;
            else
                if (count < length)
                {
                    
                    change(s, count);
                }
                else
                    break;
    }
    if (flag == 1)
        return true;
    else
        return false;
}
int main()
{
    string s, t;
    while (cin >> s >> t && (s != "0" || t != "0"))
    {
        if (Judge(s, t))
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
        
    }
    return 0;
}

错误原因:

1、一开始循环弄错了,导致死循环

2、count没有加上引用符,还是导致死循环了

思路:

1、首先写一个子函数用来改变病毒字符串的顺序

2、flag标记是否有相同的

3、有过病毒字符串有连续几个和人的一样,但下一个不一样,需要一个tt来记住第一个i相等的时候,j的大小

猜你喜欢

转载自www.cnblogs.com/h694879357/p/11770070.html