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

变量cnt1表示在P之前的A的数量,cnt2表示在PT之间A的数量,cnt3表示T之后A的数量(2)式中很明显可以看出cnt1(n) * cnt2(1) = cnt3(n)那么(3)式中都是由(2)式基础上得到的,即aPbTc中必然也是满足cnt1 * cnt2 = cnt3的,那么我们在变形后,cnt1不变,cnt2++,cnt3=cnt1+cnt3;原结论仍然成立。

在推理出以上结论后,Submit之后发现有一处错误首先怀疑是"\n"的问题,毕竟题目中也没有说清楚,DEBUG之后发现还是一处错误之后测试出"PA"的错误,没有验证'P','T'的同时出现。之后就A了

//version1 DEBUG '\n'
//version2 DEBUG "PA"
#include <bits/stdc++.h>using namespace std;
bool flag = true;
bool visP = false;
bool visT = false;
int main()
{int cas;int cnt1, cnt2, cnt3;char str[100+50];scanf("%d", &cas);getchar();while(cas--){flag = true;visP = false;visT = false;cnt1 = 0, cnt2 = 0, cnt3 = 0;//scanf("%s", str);
        gets(str);int len = strlen(str);for(int i = 0; i < len; ++i){if(str[i] == 'P'){if(visP || visT){   // P|T presentflag = false;break;}else{visP = true;}}else if(str[i] == 'A'){if(!visP && !visT){cnt1++;}if(visP && !visT){cnt2++;}if(visP && visT){cnt3++;}}else if(str[i] == 'T'){if(visT || !visP){  // P absent | T presentflag = false;break;}else{visT = true;}}else{//otherwiseflag = false;break;}}if(cnt1 * cnt2 != cnt3){flag = false;}if(cnt2 == 0){flag = false;}if(!visP || !visT){flag = false;}if(flag){printf("YES\n");}else{printf("NO\n");}}return 0;
}

CAPOUIS'CODE

转载于:https://www.cnblogs.com/capouis/p/4604611.html

PAT-BASIC-1003-我要通过!相关推荐

  1. PAT (Basic Level) Practice (中文)答案合集

    准备复试专用,目标刷完全部中文题! 1001 害死人不偿命的(3n+1)猜想 (15 分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ...

  2. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  3. PAT basic level 答案+解题思路+难点 (个人刷题记录)

    PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...

  4. PAT乙级真题全集-PAT (Basic Level) Practise (中文)

    1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...

  5. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  6. PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数

    文章目录 题目分析 题目链接 题目分析 分析:求单源最短路,使用dijkstra()算法. 最短路的条数,和最短路中 人数最多的一条,输出最多人数. 本题点比较少,使用邻接矩阵d[N][N]来存. a ...

  7. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

  8. PAT乙级——1003

    PAT乙1003 题目: 我要通过!(20 分) 题目分析 代码实现 题目: 我要通过!(20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的&quo ...

  9. PAT乙级 1003 我要通过! (20分)

    PAT乙级练习总结 PAT乙级 1003 我要通过! (20分) 第二版有注释,希望我的思路可以帮助你. 文章目录 PAT乙级练习总结 一.1003题目 二.第一版只过了三个点 三.第二版 1003 ...

  10. (PAT)BasiclLevel_c++ #1003 我要通过!(演绎法)

    这道题是PAT乙级#1003题 这道题困惑了我好久,也让我真正认识到这种OJ题其实更大程度上考验的是数学能力,相比之下,代码能力反而只是一种实现的工具 先来看一下题目 题目描述 "答案正确& ...

最新文章

  1. 利用OpenGL渲染并用OpenCV输出显示二维图像
  2. 乐观锁 -业务判断 解决高并发问题
  3. Java中return结束循环,Java中break、continue、return在for循环中的使用
  4. LeetCode 970. 强整数
  5. 在ARM Cortex-M上实现FreeRTOS性能计数器
  6. 架构可视化支撑系统演进探索
  7. Required String parameter 'images' is not present
  8. 44000+ 人一夜之间失业
  9. 有哪些论文降重的方法?
  10. 北大学神恽之玮斩获西蒙斯学者奖:18岁满分获IMO金牌,35岁成MIT终身教授,北大数学“黄金一代”刷新战绩...
  11. 玩家打卡圣地!首家“ALIENWARE红店”空降三里屯太古里
  12. 键盘按键介绍及快捷键
  13. requests使用cookie模拟登陆豆瓣
  14. echart 设置折线红色警戒线
  15. 代沐研:渡尽劫波非农在,空头有望脱苦海
  16. 给定一个数组,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择某一天买入这只股票,并选择在未来的一个不同的日子卖出该股票。【LeetCode Hot 100】
  17. python中 jsonchema 与 shema 效率比较
  18. 京沪高铁,终于给了日本。。
  19. MacBook Pro出现kernel_task占用CPU非常高问题
  20. asp创建mysql表_asp创建数据库

热门文章

  1. 我家闺女35岁了还嫁不出去我该怎么办?
  2. 想要获得别人尊重,你必须得自己先牛逼起来
  3. 短视频的运营团队分为三种
  4. 读取速度500m/s和1000m/s的硬盘,装系统使用起来有区别吗?
  5. Qt4_与主线程通信
  6. Qt4_内置的窗口部件类和对话框类
  7. SqlServer解析XML,解析JSON数据格式
  8. 如何打开VMware的vmdk虚拟磁盘文件
  9. sql nolock_SQL Server NOLOCK和最佳优化
  10. 在SQL Server 2017上充分利用Python