#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){
string str;
cin>>str;
int flag=0;
int pp=-1,tp=-1;
for(int j=0;j<str.size();j++){
if(str[j]!='P'&&str[j]!='A'&&str[j]!='T'){
flag=1;
break;
}
if(str[j]=='P'){
if(pp!=-1){
flag=1;
break;
}
pp=j;
}
if(str[j]=='T'){
if(tp!=-1){
flag=1;
break;
}
tp=j;
if(tp<pp){
flag=1;
break;
}
}
}
int headA=pp;
int tailA=str.size()-tp-1;
int midA=tp-pp-1;
if(tailA!=midA*headA)
{
flag=1;
}
if(midA==0){
flag=1;
}
if(flag)
{
cout<<"NO"<<'\n';
}
else{
cout<<"YES"<<'\n';
}
}
}
本文介绍了一个使用C++实现的PAT模式匹配程序。该程序能够读取多组输入字符串,并判断这些字符串是否符合特定的PAT模式:即字符串由任意数量的P、A、T字符组成,且其中的P和T出现次数各一次,A至少出现一次,同时P和T之间至少存在一个A字符。此外,字符串中P到T之间的A的数量必须等于T之后A的数量乘以P之前A的数量。
484

被折叠的 条评论
为什么被折叠?



