PAT 乙级练习 1003
2018-03-05 00:51
309 查看
1003. 我要通过!
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:
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
代码如下:
#include <iostream> #include <string> #include <iterator> using namespace std; int main() { int num; cin >> num; int status; //0 not P; 1 xP; 2 xPA,XPXA; 3 xPxAT string str; bool flag; unsigned int cnt1,cnt2,cnt3; for(int i=0; i<num; ++i){ flag = true; status = 0; cnt1 = 0; cnt2 = 0; cnt3 = 0; cin >> str; for(string::iterator it=str.begin(); it!=str.end(); ++it){ if(*it!='P' && *it!='A' && *it!='T'){ flag = false; break; } else if(*it == 'P'){ if(status == 0) status = 1; else{ flag = false; break; } } else if(*it == 'A'){ if(status == 0){ //no P cnt1 += 1; continue; } else if(status == 1){ //is P+A status = 2; cnt2 += 1; } else if(status == 2){ cnt2 += 1; //is PA+nA } else if(status == 3){ cnt3 += 1; continue; } } else if(*it == 'T'){ if(status == 2) status = 3; else{ flag = false; break; } } } if(status==3 && flag && cnt1*cnt2 == cnt3) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }
相关文章推荐
- pat乙级1003
- PAT乙级 1003. 我要通过!
- [PAT乙级]1003. 我要通过!(20)
- PAT乙级训练题--1003
- PAT乙级 1003. 我要通过!(20)
- 乙级 PAT 1003. 我要通过!(20)
- PAT_乙级1003
- PAT乙级 1003. 我要通过!(20)
- PAT 乙级1003 我要通过
- PAT乙级试题 1003
- PAT 乙级练习 1001
- PAT乙级题 1003 python解答
- 牛客网编程练习之PAT乙级(Basic Level):1032 选大王
- PAT乙级真题及训练集 PAT (Basic Level) Practise (中文)1003. 我要通过!
- PAT 乙级1003. 我要通过!(JAVA版)
- 【PAT】(乙级)1003. 我要通过!(20)
- PAT——乙级真题1003代码
- PAT乙级1003
- PAT程序设计练习——甲级1003(任意两个城市最短距离、Floyd最短路径算法)
- PAT 乙级练习 1011