PAT乙级训练题--1003
2016-09-17 21:14
141 查看
/* “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于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> using namespace std; int main() { int n; cin>>n; while(n--){ string str; cin>>str; int p = str.find_first_not_of('A');//找到第一个不是'A'的位置 if(str[p]!='P'||p==string::npos){//如果没找到p,或者 cout<<"NO"<<endl; continue; } int t = str.find_first_not_of('A',p+1); if(t==p+1||str[t]!='T'||t==string::npos){//这里注意呀可能出现PT中间没有A cout<<"NO"<<endl; continue; } int m = str.find_first_not_of('A',t+1); if(m!=string::npos){ cout<<"NO"<<endl; continue; } int c = str.length()-t-1;//字符串长度。。。。 int a = p; int b = t-p-1; if(c-(b-1)*a==a){ cout<<"YES"<<endl; } else{ cout<<"NO"<<endl; } } return 0; }
相关文章推荐
- PAT乙级 1003. 我要通过!
- PAT 乙级1003
- PAT(乙级)1003 数素数 (20)
- 1003. 我要通过!(20) PAT乙级真题
- PAT乙级训练题--1007
- PAT乙级1003
- PAT乙级1003
- 【PAT】(乙级)1003. 我要通过!(20)
- PAT乙级 1003. 我要通过!(20)
- PAT乙级训练题--1008
- PAT 乙级 1003. 我要通过!
- PAT_乙级1003
- PAT 乙级 1003. 我要通过!(20) Java版
- PAT乙级1003
- PAT乙级训练题--1009
- ------PAT乙级----1003
- 1003. 我要通过!(20)-PAT乙级
- PAT乙级训练题--1011. A+B和C (15)
- 牛客网 PAT 乙级 1003 数素数 (20)
- PAT乙级-1003