1+ #include < iostream>
2+ #include < string>
3+ using namespace std ;
4+
5+ bool Judge (string s, int P, int A, int T, string a, string b, string c) {
6+ // 要有PAT
7+ if (P == string::npos || A == string::npos || T == string::npos)
8+ {
9+ return false ;
10+ }
11+ for (size_t i = 0 ; i < s.length (); i++)
12+ {
13+ // 除了PAT不能有别哒
14+ if (s[i] != ' P' && s[i] != ' A' && s[i] != ' T' )
15+ {
16+ return false ;
17+ }
18+ }
19+ // 其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
20+ for (size_t i = 0 ; i < a.length (); i++)
21+ {
22+ if (a[i] != ' A' )
23+ {
24+ return false ;
25+ }
26+ }
27+ for (size_t i = 0 ; i < b.length (); i++)
28+ {
29+ if (b[i] != ' A' )
30+ {
31+ return false ;
32+ }
33+ }
34+ for (size_t i = 0 ; i < c.length (); i++)
35+ {
36+ if (c[i] != ' A' )
37+ {
38+ return false ;
39+ }
40+ }
41+
42+ // 情况2
43+ // 情况二b一定为A,ac相等
44+ if (b == " A" && a != c)
45+ {
46+ return false ;
47+ }
48+ // 情况3
49+ if (c.length () != a.length () * b.length ())
50+ {
51+ return false ;
52+ }
53+ return true ;
54+ }
55+
56+ int main ()
57+ {
58+ int n;
59+ cin >> n;
60+ while (n--)
61+ {
62+ string s;
63+ string a, b, c, x;
64+ cin >> s;
65+ int P = 0 , A = 0 , T = 0 ;
66+ P = s.find_first_of (' P' );
67+ A = s.find_first_of (' A' );
68+ T = s.find_first_of (' T' );
69+ a = s.substr (0 , P);
70+ b = s.substr (P + 1 , T - P - 1 ); // substr()第二个参数为子字符串长度
71+ c = s.substr (T + 1 , s.length ());
72+ if (Judge (s, P, A, T, a, b, c))
73+ cout << " YES" << endl;
74+ else
75+ cout << " NO" << endl;
76+ }
77+ system (" pause" );
78+ return 0 ;
79+ }
80+ // 题目描述也太晦涩了吧
81+
82+ // 答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
83+
84+ // 得到“答案正确”的条件是:
85+
86+ // 字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
87+ // 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
88+ // 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
89+ // 现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
90+
91+ // 输入格式:
92+ // 每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。
93+
94+ // 输出格式:
95+ // 每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO。
96+
97+ // 输入样例:
98+ // 8
99+ // PAT
100+ // PAAT
101+ // AAPATAA
102+ // AAPAATAAAA
103+ // xPATx
104+ // PT
105+ // Whatever
106+ // APAAATAA
107+ // 输出样例:
108+ // YES
109+ // YES
110+ // YES
111+ // YES
112+ // NO
113+ // NO
114+ // NO
115+ // NO
0 commit comments