答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。 得到“答案正确”的条件是: 1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;\ 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;\ 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。 现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。 输入格式: 每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。 输出格式:每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。
时间: 2024-04-16 09:29:34 浏览: 273
根据题目描述,我们需要编写一个程序来判断给定的字符串是否可以获得"答案正确"。下面是一个解决方案的示例代码:
```python
def is_answer_correct(s):
count_p = s.count('P') # 统计字符 'P' 的数量
count_t = s.count('T') # 统计字符 'T' 的数量
count_a = s.count('A') # 统计字符 'A' 的数量
# 字符串中必须仅有 P, A, T 这三种字符,不可以包含其他字符
if count_p + count_a + count_t != len(s):
return False
# 任意形如 xPATx 的字符串都可以获得 "答案正确"
if count_p != 1 or count_t != 1:
return False
index_p = s.index('P') # 找到字符 'P' 的索引
index_t = s.index('T') # 找到字符 'T' 的索引
# 如果 aPbTc 是正确的,那么 aPbATca 也是正确的
a = s[:index_p]
b = s[index_p + 1:index_t]
c = s[index_t + 1:]
if b == '': # b 可以为空字符串
return (a == 'A' * len(a)) and (c == 'A' * len(c))
else:
return a == b * len(a) and c == b * len(c)
n = int(input()) # 输入测试用例的数量
for _ in range(n):
s = input() # 输入字符串
if is_answer_correct(s):
print('YES')
else:
print('NO')
```
这段代码定义了一个名为 `is_answer_correct` 的函数,用于判断给定的字符串是否可以获得"答案正确"。然后,按照输入格式,读取测试用例的数量和每个字符串,将每个字符串作为参数传递给 `is_answer_correct` 函数进行判断,并根据判断结果输出 "YES" 或 "NO"。
阅读全文