PAT

PAT1003打卡-0909

2020-09-10  本文已影响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;

}

上一篇下一篇

猜你喜欢

热点阅读