1003 我要通过!c语言 (20分)最近在PTA系统刷了点题,就发上来了。
2020-08-01 18:55
190 查看
答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
得到“答案正确”的条件是:
字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
如果 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 main() { int i = 0; int first,second,last; int cntt=0,cntp=0; int t=0,p=0; int oth=0; int len=0; int n; scanf("%d",&n); for(i=0;i<n;i++) { t=p=oth=0; cntt = cntp = 0; char s[110]=""; scanf("%s",s); len = strlen(s); int j=0; for(j=0;j<len;j++) { if(s[j]=='P') { cntp++; p=j; } else if(s[j]=='T') { cntt++; t=j; } else if(s[j]!='A') { oth++; } } if(cntp!=1||cntt!=1||oth!=0||t-p<2)//如果P与T的数量不为一,有其他字符,或P与T之间没有字符; { printf("NO\n"); continue; } first=p; second=t-p-1; last=len-t-1; if(first*second==last)//题目隐含条件,前两个个数相乘等于第三个的个数 { printf("YES\n"); } else { printf("NO\n"); } } return 0; }
相关文章推荐
- (c语言)PAT乙级 1003 我要通过! (20分)
- PTA 1003 我要通过!(C语言实现)实测通过!
- PTA乙级_1003 我要通过! (20分)_C语言版
- PTA(Basic Level) python 1003 我要通过! (20分)
- PTA 1003 我要通过!(C语言实现)
- 浙大 | PTA | 乙级(Basic Level) 1003 我要通过! (20分)
- PTA通过-表达式转换(C语言实现)2018/11/17
- PTA Basic level 1008 数组元素循环右移问题 (20分)(c语言实现)
- PTA刷题笔记(C语言) | 7-39 龟兔赛跑 (20分)
- (一个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本的学生信息管理系统(增、删、查、改‘显示)
- 1003 我要通过! (20 分)C语言
- PTA 坑点1003 我要通过!
- C语言:模拟输入密码系统,三次以内正常通过,三次退出程序
- PAT1003.我要通过!(20)(简单的c语言风格c++解法)
- PTA刷题笔记(C语言) | 7-33 统计素数并求和 (20分)
- 1003 我要通过! (20分)
- PAT乙级1003 || 我要通过!(C语言)
- 我要通过!详解!字符串判别详解 PTAbasic1003 浙大C++
- PAT1003. 我要通过!(C语言实现,多种解法)
- PTA Basic level 1003我要通过