前言: 说真的 这个题我连题目都读不懂 我不知道具体原因是什么 可能是语文不好 可能是理解能力不行 此文章是看了别的大佬解题过程之后才写出来的 我觉得很有必要总结一下   -----分界线---- 补充:  在我写完这个题的代码之后  仍然觉得这个题的表述有问题  也就是这个题实现之后的条件 和题目给出的条件是不太一样的  算了  重点是学习其中有价值的东西

题目:

代码如下:

#include<iostream>
using namespace std;#include<cstring>int main()
{int x = 0;cin >> x;   //输入的字符串个数while (x--)   //8 87654321  x是几 进去几次{int key = 0;int Afront = 0, Amiddle = 0, Alater = 0;   //state记录PAT 关键字 后面依次为前面 中间 后面的A的个数int i = 0;char arr[100];cin >> arr;for (i = 0; i < strlen(arr); i++){// AAAPAAAATAAAAAAAAif (arr[i] != 'P' && arr[i] != 'A' && arr[i] != 'T')break;if (arr[i] == 'P'){if (key == 0)  //为什么是0就加 不是零就跳呢? 因为整个字符串只能有一个P 如果不是0 就代表出现过P了 就不对了key = 1;elsebreak;}if (arr[i] == 'A'){if (key == 1)key = 2;else if (key == 0)Afront++;else if (key == 2)Amiddle++;else if (key == 3)Alater++;elsebreak;}if (arr[i] == 'T')if (key == 2)key = 3;elsebreak;}// 中间 多出了几个A 后面就要有几个前面的while (Amiddle--){Alater -= Afront;}if (key != 3 || i != strlen(arr) || Afront != Alater)cout << "NO\n";elsecout << "YES\n";}return 0;
}

就以上面我的这个代码为例讲解吧  先说一下通过的条件:

1. 字符串仅有PAT三种字符组成 有其他的就是NO

2.  如果中间仅仅是PAT 则T后面与P前面必须有相同个数个A   即 AAPATAA  AAAPATAAA 或者是PAT = = 等等

3.  aPATa的基础上  中间每多一个A  后面就要多出一个前面的a

关于这个题的通过条件 读者可以多阅读阅读其他有关文章  感觉这个题是真的难分析

某讲解此文章下方的评论

下面说一说我觉得有意义的点:

1.  当你想输入未定数字条字符串  (这个条数是自己输入的) 那么可以用上面的方法 即 while(x--) 这样你可以直接输入10条字符串  后面的字符串都会放在缓冲区中 然后逐条进行判断

2.  输入某字符数组arr后  可以用strlen函数计算有效字符个数 再用for循环即可对每一位字符进行判断

3.  补充一点 计算string类型对象的字符个数用 a.size()  即可  (不可有空格,空格即中断)

4.  关于上方1003题的具体算法  就得对题目有较深的理解了 之后才能写出对应代码: 核心就是 分别判断P T 的前中后A的个数 然后进行判断

【PTA-乙级】1003-我要通过(手动感叹号)相关推荐

  1. C++学习之路 | PTA乙级—— 1003 我要通过! (20分)(精简)

    1003 我要通过! (20分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件, ...

  2. 牛客网 PTA乙级真题 1003 数素数

    数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整数M &l ...

  3. PTA 乙级难点(全部)

    PTA 乙级难点题目列表 1002 写出这个数(字符串) 1003 我要通过! 1004 成绩排名 1005 继续(3n+1)猜想 1008 数组元素循环右移问题 1009 说反话 1010 一元多项 ...

  4. PTA乙级题解(110题全)

    First of all 如果你是你们学校的ACM选手 那么我猜你的目标可能是下面几个吧(^v^) (1) ACM区域赛拿牌 (2) PTA顶级(Top Level) (3) CCF-CSP认证400 ...

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

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

  6. PTA乙级1014(python3)

    PTA乙级1014(python3) 题目信息: 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&a ...

  7. 【PTA乙级练习题】topic:1001

    [PTA乙级练习题]topic:1001 题目 审题 代码 知识点 总结 题目 1001 害死人不偿命的(3n+1)猜想 (15 分) 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇 ...

  8. PTA乙级1028 人口普查

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

  9. PTA 乙级 在霍格沃茨找零钱(c++)

    PTA 乙级 在霍格沃茨找零钱(c++) 题目描述 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleo ...

  10. PTA 乙级 【1008】 数组元素循环右移问题

    PTA 乙级 [1008] 数组元素循环右移问题 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置(最后M个数循环移至最前面的M个位置).如果 ...

最新文章

  1. Mybatis联合查询
  2. C#学习路线:C#入门经典 -> CLR VIA C# -> WINDOWS核心编程
  3. 【转】系统管理类DOS命令汇总
  4. OPA Quality Report in Jenkins Ben - 到哪里能看到我们的OPA Test在Jenkins Server上运行的情况
  5. 剑指Offer - 面试题57 - II. 和为s的连续正数序列(滑动窗口)
  6. (软件工程复习核心重点)第二章可行性研究-第三节:数据流图
  7. springBoot+mybaits+达梦数据库
  8. SAP License:烟草行业ERP选型
  9. 基于算法的建模--小结
  10. Q123:PBRT-V3,各种形式的“光传播方程”的推导依据
  11. enumerate取下标
  12. 期待人工智能在合作时的表现
  13. 你的爬虫是否徘徊在违法的边缘?
  14. Android Studio主导Unity打包方式的安卓打包
  15. 程序员的IDE到底是浅色主题好还是深色主题好?
  16. 产品读书《从0到1:开启商业与未来的秘密》
  17. Luca Canali
  18. 数学建模 --- 层次分析法(AHP模型)
  19. 企业微信机器人自动消息发送webhook接入代码
  20. 递归求阶乘和--PTA

热门文章

  1. Tampermonkey下载安装教程及脚本分享
  2. 洛谷-P1638-逛画展
  3. JAVA JDK1.8超详细安装教程
  4. 建筑业企业施工劳务资质备案申请条件及劳务分包的种类
  5. 201915 天融信防火墙TopGate500初探
  6. 天融信学习笔记---DOS命令
  7. 你了解这么多万兆以太网规范吗?
  8. 服务器系统fluent,用云服务器算fluent
  9. LWIP-工业以太网交换机 SNMP功能与SStool功能完成笔记
  10. 报装广州电信光纤宽带需要什么流程