PAT (Basic Level) Practise (中文)1003. 我要通过!(20)
2015-08-15 18:45
267 查看
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。
输入样例:
8 PAT PAAT AAPATAA AAPAATAAAA xPATx PT Whatever APAAATAA
输出样例:
YES YES YES YES NO NO NO NO#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ int n,len,p,a,t,p_pos,t_pos; char str[100]; scanf("%d\n",&n); while(n--){ gets(str); p = a = t = p_pos = t_pos = 0; len = strlen(str); for(int i = 0;i < len;i++){ if(str[i] == 'P'){ p++; p_pos = i; } if(str[i] == 'A'){ a++; } if(str[i] == 'T'){ t++; t_pos = i; } } if(p+a+t != len || p > 1 || t > 1 || p_pos >= t_pos - 1 || p_pos * (t_pos - p_pos - 1) != len - t_pos - 1) printf("NO\n"); else printf("YES\n"); } return 0; }
相关文章推荐
- 11个让你吃惊的linux命令
- 个人收藏
- pkg-config的用法
- C#垃圾回收机制详解
- Java并发编程:volatile关键字解析
- jquery 元素控制(追加元素/追加内容)介绍及应用
- CodeForces 380A Sereja and Prefixes
- php des 加密解密实例
- PAT (Basic Level) Practise (中文)1002. 写出这个数 (20)
- 开源 自由 java CMS - FreeCMS2.0 举APP产生信息数据
- JVM运行时数据区域解析
- 伪静态
- [LeetCode] Minimum Depth of Binary Tree
- JavaSE基础--(三)面向对象 部分
- hdu 1757
- 新浪微博新兵训练营系列课程——平台RPC框架介绍
- HDU 3488 Tour 最大权匹配
- 一行代码比五百行架构说明更有价值
- poj3662 二分+spfa
- Light oj 1010 - Knights in Chessboard