PAT1003我要通过
//pat1003
#include<iostream>
#include<string>
using namespace std;
int main()
{
int countP,countT,n,i,j;//countP记录P的数量,countT记录T的数量
int a[10]={0};
int aleft,amid,aright;//计算PA左侧、中间和右侧a的个数
char str[10][100];
cin>>n;//输入需要判断的字符串个数
for(i=0;i<n;i++)
{
cin>>str[i];
aleft=0,amid=0,aright=0,countP=0,countT=0;//每次开始对这些值初始化为0
for(j=0;str[i][j]!='\0';j++)//如果字符串非空,则一直遍历下去
{
if(str[i][j]!='P'&&str[i][j]!='A'&&str[i][j]!='T')
a[i]=-1;
else if(str[i][j]=='P'&&countT==0)//保证P在T之前出现
{
countP++;
}
else if(str[i][j]=='T'&&countP==1)//保证T之前只出现了一个P
{
countT++;
}
else if(str[i][j]=='A')
{
if(countP==0&&countT==0)//累加求PT左侧的a
aleft++;
else if(countP==1&&countT==0)//累加求PT中间的a
amid++;
else if(countP==1&&countT==1)//累加求PT右侧的a
aright++;
}
}
if(a[i]==0)
{
if(j<3)//如果字符长度小于三则绝对不同时包含PAT
a[i]=0;
else if(countP!=1||countT!=1)//保证PT的个数均为1
a[i]=0;
else if(aright==aleft*amid)
a[i]=1;
}
if(a[i]==1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
/***
以下为误解题意的代码,我原以为是输入所有该判断的字符串后,然后同时输出所有
字符串,以下为错误解,大家可以跳过不读
for(i=0;i<n;i++)
{
if(a[i]==1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}***/
return 0;
}