PAT-BASIC-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 变量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-我要通过!相关推荐
- PAT (Basic Level) Practice (中文)答案合集
准备复试专用,目标刷完全部中文题! 1001 害死人不偿命的(3n+1)猜想 (15 分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ...
- 【题解】PAT (Basic Level) Practice (中文)
互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...
- PAT basic level 答案+解题思路+难点 (个人刷题记录)
PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...
- PAT乙级真题全集-PAT (Basic Level) Practise (中文)
1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...
- PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 ...
- PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数
文章目录 题目分析 题目链接 题目分析 分析:求单源最短路,使用dijkstra()算法. 最短路的条数,和最短路中 人数最多的一条,输出最多人数. 本题点比较少,使用邻接矩阵d[N][N]来存. a ...
- PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20) http://www.patest.cn/contests/pat-b-practise/1034 ...
- PAT乙级——1003
PAT乙1003 题目: 我要通过!(20 分) 题目分析 代码实现 题目: 我要通过!(20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的&quo ...
- PAT乙级 1003 我要通过! (20分)
PAT乙级练习总结 PAT乙级 1003 我要通过! (20分) 第二版有注释,希望我的思路可以帮助你. 文章目录 PAT乙级练习总结 一.1003题目 二.第一版只过了三个点 三.第二版 1003 ...
- (PAT)BasiclLevel_c++ #1003 我要通过!(演绎法)
这道题是PAT乙级#1003题 这道题困惑了我好久,也让我真正认识到这种OJ题其实更大程度上考验的是数学能力,相比之下,代码能力反而只是一种实现的工具 先来看一下题目 题目描述 "答案正确& ...
最新文章
- 利用OpenGL渲染并用OpenCV输出显示二维图像
- 乐观锁 -业务判断 解决高并发问题
- Java中return结束循环,Java中break、continue、return在for循环中的使用
- LeetCode 970. 强整数
- 在ARM Cortex-M上实现FreeRTOS性能计数器
- 架构可视化支撑系统演进探索
- Required String parameter 'images' is not present
- 44000+ 人一夜之间失业
- 有哪些论文降重的方法?
- 北大学神恽之玮斩获西蒙斯学者奖:18岁满分获IMO金牌,35岁成MIT终身教授,北大数学“黄金一代”刷新战绩...
- 玩家打卡圣地!首家“ALIENWARE红店”空降三里屯太古里
- 键盘按键介绍及快捷键
- requests使用cookie模拟登陆豆瓣
- echart 设置折线红色警戒线
- 代沐研:渡尽劫波非农在,空头有望脱苦海
- 给定一个数组,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择某一天买入这只股票,并选择在未来的一个不同的日子卖出该股票。【LeetCode Hot 100】
- python中 jsonchema 与 shema 效率比较
- 京沪高铁,终于给了日本。。
- MacBook Pro出现kernel_task占用CPU非常高问题
- asp创建mysql表_asp创建数据库