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

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

1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

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

输入格式:
每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过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
  1. #include<stdio.h>
  2. #include<string.h>
  3. int main(){
  4. /*
  5. 后前面A的数目/P前面A的数目等于P与A中间的A的数目。
  6. 办法有点笨
  7. */
  8. int n;
  9. scanf("%d",&n);
  10. char c[];
  11. int i;
  12. int b;//数组长度
  13. float a1=;//P前面A的数目
  14. float a2=;//P后面,T中间,A的数目
  15. float a3=;//T后面A的数目
  16. int k1=;//P的数目
  17. int k2=;//T的数目
  18. int p;//P的位置
  19. int t;//T的位置
  20. int y;//跳出第二层循环
  21. while(n--)
  22. {
  23. y = ;
  24. k1 = ;
  25. k2 = ;
  26. a1 = ;
  27. a2 = ;
  28. a3 = ;
  29. scanf("%s",c);
  30. b = strlen(c);
  31. /*
  32. 判断是不是有多个P或T以及P与T的位置
  33. */
  34. for(i=;i<b;i++)
  35. {
  36. if(c[i]=='P')
  37. {
  38. p = i;
  39. k1++;
  40. }
  41. if(c[i]=='T')
  42. {
  43. t = i;
  44. k2++;
  45. }
  46. }
  47. if(k1!=||k2!=)
  48. {
  49. printf("NO\n");
  50. continue;
  51. }
  52. /*
  53. 计算P之前A的数目,同时若不是A字符输出NO
  54. */
  55. for(i=;i<p;i++)
  56. {
  57. if(c[i]=='A')
  58. {
  59. a1++;
  60. }
  61. else
  62. {
  63. printf("NO\n");
  64. y=;
  65. break;
  66. }
  67.  
  68. }
  69. if(y)
  70. {
  71. continue;
  72. }
  73. /*
  74. 判断P与T之间的A的数目,若不是A字符输出NO
  75. */
  76. for(i=p+;i<t;i++)
  77. {
  78. if(c[i]=='A')
  79. {
  80. a2++;
  81. }
  82. else{
  83. printf("NO\n");
  84. y=;
  85. break;
  86. }
  87. }
  88. if(y)
  89. {
  90. continue;
  91. }
  92. /*
  93. 计算T之后A的数目,不是字符A输出NO
  94. */
  95. for(i=t+;i<b;i++)
  96. {
  97. if(c[i]=='A')
  98. {
  99. a3++;
  100. }
  101. else{
  102. printf("NO\n");
  103. break;
  104. }
  105. }
  106. /*
  107. 判断条件
  108. */
  109. if(a1!=)
  110. {
  111. if(a3/a1!=a2)
  112. {
  113. printf("NO\n");
  114. continue;
  115. }
  116.  
  117. }
  118. /*
  119. 若a1是0则a3也一定是0
  120. */
  121. else
  122. {
  123. if(a3!=)
  124. {
  125. printf("NO\n");
  126. continue;
  127. }
  128. }
  129. if(a2==)
  130. {
  131. printf("NO\n");
  132. continue;
  133. }
  134. /*
  135. 其他条件都成立
  136. */
  137. printf("YES\n");
  138. }
  139. }

PAT 1003. 我要通过!(20)的更多相关文章

  1. 牛客网 PAT 算法历年真题 1003: 数素数 (20)

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

  2. PAT 1003我要通过!

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

  3. PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数

    PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...

  4. PAT乙级:1088 三人行 (20分)

    PAT乙级:1088 三人行 (20分) 题干 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整 ...

  5. PAT乙级:1064 朋友数 (20分)

    PAT乙级:1064 朋友数 (20分) 题干 如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号".例如 123 和 ...

  6. PAT 1003 我要通过!(20)(代码+思路)

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

  7. PAT 1003. 我要通过!(20) JAVA

    参考http://blog.csdn.net/bin8632/article/details/50216297 答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答 ...

  8. PAT乙级 1009. 说反话 (20)

    1009. 说反话 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一句英语,要求你编写程序,将句中 ...

  9. PAT乙级-1057. 数零壹(20)

    给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0.多少1.例如给定字符串" ...

随机推荐

  1. android 比较完善json请求格式

    public static String getHttpText(String url) { if (MyApplication.FOR_DEBUG) { Log.i(TAG, "[getH ...

  2. 安装SqlServer的时候性能计数器注册表配置单元一致性失败的解决办法

    http://www.2cto.com/database/201204/126772.html

  3. 去掉字符序列左边和右边的空格 trim()

    str = " ai lafu yo ";str = trim(str); 输出的将是"ai lafu yo"

  4. mysql锁机制总结

    1.隔离级别 (1)读不提交(Read Uncommited,RU) 这种隔离级别下,事务间完全不隔离,会产生脏读,可以读取未提交的记录,实际情况下不会使用. (2)读提交(Read commited ...

  5. mysql优化案例分析

    本文总结了一些工作常见的sql优化例子,虽然比较简单,但很实用,希望对大家有所帮助.sql优化一般分为两类,一类是sql本身的优化,如何走到合适的索引,如何减少排序,减少逻辑读:另一类是sql本身没有 ...

  6. Android搭建junit测环境

    在AndroidManifest.xml文件中增加两个东西,分别是: 1.uses-library ,位于application里面. 2.instrumentation,与application同级 ...

  7. DBA的技能图谱

    最近发现公布的技术岗位的技能图谱中没有DBA的,比较心塞,于是根据自己的工作经验写了一个,写的过程中发现,还的不断的完善,但是先放出来,欢迎大家提建议.

  8. 烂泥:nagios监控单网卡双IP

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 公司的业务有几台服务器存放在IDC机房中,说是双线路.但是我看到网卡的配置是单网卡双IP的形式.如下: 而公司这边的线路是联通的IP,如下: nagio ...

  9. 描述Linux运行级别的0-6的各自含义(计时1分钟)

    中文: 0:关机 1:单用户模式 2:无网络支持的多用户模式 3:有网络支持的多用户模式(文本模式,工作中最常使用的模式) 4:保留,未使用 5:有网络支持有X-Window支持的多用户模式 6:重新 ...

  10. android WebView网页浏览器

    组件位置:composite>WebView .xml <WebView android:id="@+id/webview_pipeweb" android:layou ...