PAT (Basic Level) Practise (中文)- 1003. 我要通过!(20)
2015-04-28 18:47
429 查看
http://www.patest.cn/contests/pat-b-practise/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<stdio.h> #include<string.h> int judgePAT(char str[],const int len) { if(len<3) return 0; int iP=0,iT=0; int lenP=0,lenT=0; int len1=0,len2=0,len3=0; for(int i=0;i<len;i++) { if( 'P'==str[i] && 0==lenP) { iP=i; lenP++; } else if('A'==str[i]) { if(lenT) len3++; else if(lenP) len2++; else len1++; } else if('T'==str[i] && 0==lenT && 1==lenP ) { iT=i; lenT++; } else return 0; } if( 1==lenP && 1==lenT && len2>0 ) if(len1*len2==len3) return 1; return 0; //NO } int main() { int n=0; char str[10][110]; scanf("%d",&n); getchar(); for(int i=0;i<n;i++) { gets(str[i]); if(judgePAT(str[i],strlen(str[i]))) printf("YES"); else printf("NO"); if(i<n-1) printf("\n"); } return 0; }
相关文章推荐
- PAT (Basic Level) Practise (中文)1003. 我要通过!(20)
- PAT (Basic Level) Practise (中文) 1003.我要通过!(20)
- PAT (Basic Level) Practise (中文)1003. 我要通过!(20) C语言
- PAT (Basic Level) Practise (中文)1003. 我要通过!(20)
- PAT (Basic Level) Practise (中文)1003. 我要通过!(20)
- PAT (Basic Level) Practise (中文)1003. 我要通过!(20)
- PAT乙级真题及训练集 PAT (Basic Level) Practise (中文)1003. 我要通过!
- PAT (Basic Level) Practise (中文) 1003.我要通过
- PAT (Basic Level) Practise (中文)1014. 福尔摩斯的约会 (20)
- PAT (Basic Level) Practise (中文) 1023. 组个最小数 (20)
- PAT (Basic Level) Practise (中文) 1058. 选择题(20)
- PAT (Basic Level) Practise (中文)1002. 写出这个数 (20)
- PAT (Basic Level) Practise (中文)1022. D进制的A+B (20) C语言
- PAT (Basic Level) Practise (中文)1008. 数组元素循环右移问题 (20) C语言
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20) C语言
- PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
- PAT (Basic Level) Practise (中文)1023. 组个最小数 (20)
- PAT (Basic Level) Practise (中文) 1053. 住房空置率 (20)
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)
- PAT (Basic Level) Practise (中文)1018. 锤子剪刀布 (20)