2017.2.27PAT level B 1003

来源:互联网 发布:d2c旗舰店淘宝 编辑:程序博客网 时间:2024/06/02 21:50

1003. 我要通过!(20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

输入格式: 每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。

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

输入样例:
8PATPAATAAPATAAAAPAATAAAAxPATxPTWhateverAPAAATAA
输出样例:
YESYESYESYESNONONONO

我的想法:
主要是第三条条件比较难懂,但是试着写一些,AAPAATAAAA是正确的,那么假设中间只有一个A的时候,即,b是A的时候,ac,可以为空,ac也可以为AA,因为aPbTc正确,即aPbATca正确,所以,PAAT正确,此时ac为空。即T后A的个数为P前A的个数的P与T中间的A的个数倍。
大致过程就是:
用字符串读入,以字母P和字母T为分界线,计算字母P前,P与T之间,以及T之后的A的个数,如果符合上述规律,则为正确,否则错误。
然而思路清晰了,似乎算法依旧没有那么好写。
先留着,明天写,啊,要去睡觉了QAQ
0 0