主要的解决方案就是根据PT之间的A个数与P之前A个数相乘等于T之后的A个数
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int main()
{
int IsTrue(string str1);
int n;
int i;
int out[1000] = {};
cin >> n;
string str;
for (i = 0; i < n; i++)
{
cin >> str;
if (IsTrue(str) == 1)
{
out[i] = 1;
}
else
{
out[i] = 0;
}
}
for (i = 0; i < n; i++)
{
if (out[i] == 1)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
}
system("pause");
return 0;
}
int IsTrue(string str1)
{
int len;
int i;
int n[3] = {};
bool p = false;
bool t = false;
int record = 0;
len = str1.size();
for (i = 0; i != len; i++)
{
if (str1[i] != 'P' && str1[i] != 'A'&&str1[i] != 'T')
{
return 0;
}else
{
if (str1[i] == 'P')
{
if (p == false)
{
n[0] = record;
p = true;
}
else{
return 0;
}
}
else if (str1[i] == 'A')
{
n[1] = record;
}
else if (str1[i] == 'T'){
if (t == false)
{
n[2] = record;
t = true;
}
else{
return 0;
}
}
}
record++;
}
if ((n[0] * (n[2] - n[0] - 1)) == (record - 1 - n[2])&&((n[2]-n[0]-1)!=0))
{
return 1;
}
else
{
return 0;
}
}