PAT乙级1003

秒速五厘米 2022-05-17 08:21 304阅读 0赞

1003 我要通过!(20)(20 分)

答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

  1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;\

  2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;\

  3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

输入格式: 每个测试输入包含1个测试用例。第1行给出一个自然数n (&lt10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。

输出格式:每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。

输入样例:

  1. 8
  2. PAT
  3. PAAT
  4. AAPATAA
  5. AAPAATAAAA
  6. xPATx
  7. PT
  8. Whatever
  9. APAAATAA

输出样例:

  1. YES
  2. YES
  3. YES
  4. YES
  5. NO
  6. NO
  7. NO
  8. NO
  9. #include<iostream>
  10. using namespace std;
  11. int main()
  12. {
  13. char a[10][100];
  14. int i,j,n;
  15. int before,inner,after;//存储三处的A
  16. int P,T;//检测P,T,存储数量
  17. int b[10];//中转,存放状态
  18. cin>>n;//输入字符串个数
  19. for(i = 0; i < n; i++){
  20. b[i]=0;
  21. }//初始化
  22. for(i=0;i<n;i++)
  23. {
  24. cin>>a[i];
  25. }//输入字符串
  26. for(i=0;i<n;i++)
  27. {
  28. before = 0;
  29. after = 0;
  30. inner = 0;
  31. P=0;
  32. T=0;//初始化
  33. for(j=0;a[i][j]!='\0';j++)//检测字符串
  34. {
  35. if(a[i][j]!='P'&&a[i][j]!='A'&&a[i][j]!='T')
  36. b[i]=-1;//检测字符串是否只有PAT
  37. else if(a[i][j]=='P'&&T==0)P++;//当P检测到且T未检测到,将P记录下来
  38. else if(a[i][j]=='T'&&P== 1)T++;//当T检测到且前面只有一个P,将T记录下来
  39. else if(a[i][j] == 'A')//当检测到A时
  40. {
  41. if(P == 0 && T == 0)//当A在PT前面时
  42. before++;
  43. else if(P == 1 && T == 0)//当A在PT之间时
  44. inner++;
  45. else if(T == 1 && P == 1)//当A在PT后面时
  46. after++;
  47. }
  48. }
  49. if(b[i]==0){
  50. if(j < 3)b[i] = -1;//只有两个字符
  51. else if(T != 1||P != 1)b[i] = -1; //没有T或者没有P
  52. else if(after == before * inner)b[i] = 1;
  53. }
  54. }
  55. for(i = 0; i < n; i++)
  56. {
  57. if(b[i]==1)cout<<"YES"<<endl;
  58. else cout<<"NO"<<endl;
  59. }
  60. return 0;
  61. }

发表评论

表情:
评论列表 (有 0 条评论,304人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PAT乙级1004

    1004 成绩排名 (20)(20 分) 读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式:每个测试输入包含1个测试用例,格式为\\

    相关 PAT乙级1003

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

    相关 PAT乙级1013

    1013 数素数(20 分) 令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。 输入格式: 输入在一行中给出 M

    相关 PAT乙级1031

    1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:\

    相关 PAT乙级1003: 我要通过

    题目: ![70][] 解题思路: > 用map来保存每个元素出现的次数 ,本题的要点是找规律,找到aPcAc(其中abc可以是空字符串或者只包含A的字符串,并且

    相关 PAT~乙级~1003我要通过! ~python

    题目描述: “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答