美文网首页PAT
PAT1003打卡-0909

PAT1003打卡-0909

作者: 可爱的甜甜猪 | 来源:发表于2020-09-10 18:56 被阅读0次

    #include <iostream>

    #include<string>

    #include<vector>

    using namespace std;

    bool chapter1(string a)//首先进行第一层级的判断,保证字符串中只有PAT

    {

    bool flag1=true;

    for(int i=0;i<a.size();i++)

    {

    if(a[i]!='P'&&a[i]!='A'&&a[i]!='T')

    flag1=false;

    }

    return flag1;

    }//至此保证程序只含P,A,T

    bool chapter2(string a)//保证PT的个数

    {

    bool flag1=false;

    bool flag2=false;

    int p=0,t=0;

    flag1=chapter1(a);//满足条件1的情况下

    if(flag1==true)

    {

    for(int i=0;i<a.size();i++)

    {

    if(a[i]=='P')

    p++;

    if(a[i]=='T')

    t++;

    }

    if(p==1&&t==1)

    {

    for(int i=0;i<a.size();i++)

    {

    if(a[i]=='P')

    p=i;

    if(a[i]=='T')

    t=i;

    }

    if(p<t)

    flag2=true;

    }

    }

    return flag2;

    }//至此保证程序只含一个P和一个T

    bool chapter3(string a)//在第一个层级的基础上,进行第二层级的判断,保证XPATX

    {

    bool flag1=false;

    bool flag2=false;

    int n=a.size();

    int p=0,t=0;

    flag1=chapter2(a);//判断是否只含P,A,T且P,T只有一个

    if(flag1==true)

    {

    for(int i=0;i<n;i++)

    {

    if(a[i]=='P')

    p=i;

    if(a[i]=='T')

    t=i;

    }

    if(p<t-1&&p==n-t-1)

    flag2=true;

    }

    return flag2;

    }

    bool chapter4(string a)//判断条件3

    {

    bool flag1=false;

    bool flag2=false;

    int n=a.size();

    int p=0,t=0;

    flag1=chapter2(a);

    if(flag1==true)

    {

    for(int i=0;i<n;i++)

    {

    if(a[i]=='P')

    p=i;

    if(a[i]=='T')

    t=i;

    }

    while(p<t-2)

    {

    t--;

    n=n-p-1;

    }

    string b;

    for(int i=0;i<n;i++)

    {

    if(i==p)

    b=b+'P';

    else if(i==t)

    b=b+'T';

    else

    b=b+'A';

    }

    flag2=chapter3(b);

    }

    return flag2;

    }

    int main()

    {

    int n;

    cin>>n;

    vector<string> v(n);

    for(int j=0;j<n;j++)

    {

    cin>>v[j];

    }

    for(int j=0;j<n;j++)

    {

    if(chapter3(v[j])||chapter4(v[j]))

    {

    cout<<"YES"<<endl;

    }

    else

    cout<<"NO"<<endl;

    }

    return 0;

    }

    相关文章

      网友评论

        本文标题:PAT1003打卡-0909

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