也不知道 为什么没通过 -------------存疑 ---延后解决

#include <iostream>
#include<string>
using namespace std;
int main()
{
/*1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
输入格式: 每个测试输入包含1个测试用例。第1行给出一个自然数n(<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。

输出格式:每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。

输入样例:
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
输出样例:
YES
YES
YES
YES
NO
NO
NO
NO*/

//输入 数据采集
//个数
int count = 0;
//数据数组
string arr[10];
//数据 对应判断值
string flag[10];
string arr_temp[10];
cin >> count;
cin.get();//获取换行
//取数据
for (int i = 0; i < count; i++)
{
string temp;
getline(cin, temp);
arr[i] = temp;


}
//1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
for (int i = 0; i < count; i++)
{
string temp;
temp = arr[i];
for (int j = 0; j < arr[i].length(); j++)
{
if (temp[j] == 'P' || temp[j] == 'A' || temp[j] == 'T')//只包含 P A T
{
}
else
{
flag[i] = "NO";
}
}


}

//2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
//空字符串---即PAT三个字母
for (int i = 0; i < count; i++)
{
string a = "";
string b = "";
string c = "";
string temp="";
if (arr[i] == "PAT")//空字符串--正确
{
flag[i] = "YES";
}
if (flag[i]=="YES"|| (flag[i] != "NO"&&arr[i].length()>3))//是A判断是否---正确
{

int j = 0;
int k = arr[i].length() - j - 1;
while (arr[i][j] == 'A'&&arr[i][j] == arr[i][k])
{
j++;
k= arr[i].length() - j - 1;
}
if (flag[i] == "YES" || (k - j == 2 && arr[i][j] == 'P'&&arr[i][j + 1] == 'A'&&arr[i][j + 2] == 'T'))
{
flag[i] = "YES";
//获取a
int t = 0;
while (arr[i][t] == 'A'&&t<arr[i].length())
{
a += 'A';
t++;
}
while (arr[i][t + 1] == 'A'&&t<arr[i].length())
{
b += 'A';
t++;
}
int kk = arr[i].length() - 1;
while (arr[i][kk] == 'A')
{
c += 'A';
kk--;
}
}
temp = a + "P" + b + "AT" + c + a;
for (int q = i+1; q < count; q++)
{
if (arr[q] == temp&&temp!=""&&flag[q]!="NO")
{
flag[q] = "YES";
}
}
}

}
//不是yes 置为no
for (int i = 0; i < count; i++)
{
if (flag[i] != "YES")
{
flag[i] = "NO";
}
}
for (int i = 0; i < count; i++)
{
cout << flag[i] << endl;
}


getchar();
getchar();

return 0;
}

原文地址:https://www.cnblogs.com/linxuemufeng/p/8095316.html