problem

“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 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

solution

  • 中间只有1个A时,前后只要都是A就行(中间不能没有A)。
  • 中间不止1个A时,固定PT,然后开头的A个数*中间的A个数=末尾的A个数(不能没有PT)(条件三时递归定义的:即如果式1成立,那么PT间每多一个A,就把a移动一份到式2的末尾)
#include<iostream>
#include<cstring>
using namespace std;
int main(){int n; cin>>n;while(n--){string s; cin>>s;int m[500], p, t;memset(m,0,sizeof(m));for(int i = 0; i < s.size(); i++){m[s[i]]++;if(s[i]=='P')p = i;if(s[i]=='T')t = i;}int size = 0;for(int i = 'A'; i < 'z'; i++)if(m[i])size++;if(m['P']==1&&m['T']==1&&m['A']!=0&&size==3 &&t-p!=1&&p*(t-p-1)==s.size()-t-1)cout<<"YES\n";else cout<<"NO\n";}return 0;
}

【PAT乙】1003 我要通过! (20分) 字符串条件判定相关推荐

  1. 【2020模拟考试T3】【PAT乙】1028 人口普查 (20分) 字符串比较

    problem 1028 人口普查 (20分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇 ...

  2. 【PAT乙】1047 编程团体赛 (20分)字符串,桶排序

    problem 1047 编程团体赛 (20分) 编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写 ...

  3. 【2020模拟考试T4】【PAT乙】1034 有理数四则运算 (20分) 测试点2

    problem 1034 有理数四则运算 (20分) 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中 ...

  4. 【PAT乙】1044 火星数字 (20分)

    1044 火星数字 (20分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, ju ...

  5. 【PAT乙】1004 成绩排名 (20分) struct结构

    problem 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行: ...

  6. 【PAT】1005 Spell It Right (20 分)——字符串处理

    //要么处理字符串,要么就数字分解,都想到了没有有效组合 //我的解法1:加法结果还是int,最后逆序分解数字,按序插入#include <iostream> #include <s ...

  7. PAT 乙级 1069 微博转发抽奖 (20 分)

    题目:PAT 乙级 1069 微博转发抽奖 (20 分) 经验总结: 可以建立一个set,用于存放中奖用户.若set中有此用户,代表此用户已中奖,奖品顺延. C++代码: #include<bi ...

  8. 【PAT乙】1033 旧键盘打字 (20分) 字符串

    1033 旧键盘打字 (20分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中 ...

  9. PAT乙级 1032 挖掘机技术哪家强 (20 分)

    1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 原题链接 代码 #include < ...

最新文章

  1. UVA1108 Mining Your Own Business(思维、割点)(2011 ICPC - WorldFinal)
  2. clion 快捷键_Ctrl+Shift系列快捷键的16个应用技巧都不掌握,那就真的Out了
  3. leetcode21
  4. 关于Dapper实现读写分离的个人思考
  5. idea 解决jar 的冲突
  6. 数据:灰度增持3594枚LTC和1.43万枚LINK
  7. Lucas(卢卡斯)定理
  8. GPS开发、定位修改
  9. LinkList L 与LinkList L(LNode* L , LNode* L)的区别
  10. 安卓10自带录屏_荣耀v10怎么录屏?荣耀v10三种录屏方法
  11. OpenCV中的图像处理 —— 轮廓入门+轮廓特征
  12. JavaScript设置背景图片
  13. [4G+5G专题-132]: 传输层 - 以太网电缆的类型(Cat5,Cat5e,Cat6,Cat6a)
  14. 飞马D200S无人机与机载激光雷达在大比例尺DEM建设中的应用
  15. 解决MacBook Pro Touch ID失灵不起作用的方法
  16. linux如何查看ip
  17. 如何使用Delphi 10 Seattle的Android应用做Intent的发送和接收
  18. 网上0月租不限量、不实名的流量卡是真的吗?
  19. 国籍 mysql_MySQL之基础认识与操作
  20. 【报告分享】2021年KPL春季赛数据报告-小葫芦(附下载)

热门文章

  1. Python 标准库 —— socket(网络编程)
  2. 深度学习实践指南(五)—— 求解异或问题
  3. hive 操作(四)
  4. 标准模板库(STL)之 list 列传
  5. python数字类型及运算_Python基础教程:运算符以及数据类型解析
  6. python基础教程是什么-Python基础教程(一)
  7. 零基础学python要多久-零基础学习Python大概要多久,感悟分享?
  8. 简单python脚本实例-python脚本例子
  9. python工资这么高为什么不学-为什么Python岗位薪资越来越高
  10. python发音翻译-python实现在线翻译