一、题目

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

二、个人理解

此题的关键在于理解题意,如果不理解题意而盲目做题,很容易跳进坑中。
首先题目有三个要求:

  1. 要求一和要求二很简单,而且要求二“xPATx”涵盖了要求一“PAT”,所以编程中可以直接先写要求二。
  2. 要求三特别关键,这是整道题目的坑人之处。首先“如果 aPbTc 是正确的,那么 aPbATca 也是正确的”这句话中aPbTc有两中正确方式:
    (一)、满足“PAT”,那么“PAAT”正确;接着如果“PAAT”正确,则“PAAAT”也正确。以此类推。
    (二)、满足“aPATa”,那么“aPAATaa”正确;如果“aPAATaa”正确,那么“aPAAATaaa”……其中a可以表示空字符串,或者是仅由字母 A 组成的字符串。这里我们可以明显发现这样迭代下去,中间“A”的数量×最左边a的数量=最右边a的数量。

代码实现方式:
1.Python
利用正则表达式,实现算法。

#!/usr/bin/env python
# encoding: utf-8import re   #导入正则表达式库
num=input()
i=0
result=[]
while(i<int(num)):test=input()if(re.compile(r"A*PA+TA*").match(test)):                     #初步匹配符合“PAT”、“PAAT ”、“AAPATAA”、 “APAAATA”等,其中含有错误匹配tag1=re.compile(r"PA+T").search(test).group(0)[1:-1]  #取出最左边的A至P的字符串,但不含有Ptag2=re.compile(r"A*P").search(test).group(0)             #取出P和T之间的Atag3=re.compile(r"TA*").search(test).group(0)             #取出最右边的A至P的字符串,但不含有Pif int(len(tag1))*tag2[0:-1]==tag3[1:]:                   #进行计算,中间“A”的数量×最左边“A”的数量=最右边“A”的数量result.append('YES')else:result.append('NO')else:result.append('NO')i+=1
for item in result:print(item)

2.C++
主要利用字符串的位置关系,通过遍历得到,较之正则表达式可能烦点。

#include <iostream>
using namespace std;
int main(){int n;cin >>n;string s;int i,j;int tag1,tag2,tag3;for(i=0;i<n;i++){cin>>s;j=0;while(s[j]=='A'){j++;}if(s[j]=='P'){tag1=j;             //P所在位置,从0开始j++;while(s[j]=='A'){j++;}if(s[j]=='T'){tag2=j;         //T所在位置}j++;while(s[j]=='A'){j++;}tag3=j;             //最右边A的位置if(tag1*(tag2-tag1-1)==(tag3-1-tag2)&&(tag1+1)!=tag2){  //计算公式,但要注意一下去除中间A数量为0的情况cout<<"YES"<<endl;}else{cout <<"NO"<<endl;}}else{cout <<"NO"<<endl;}}
}

1003. 我要通过!相关推荐

  1. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  2. 【ACM】杭电OJ 1003。

    运行环境VS2017  题目链接:杭电OJ 1003 主要思想是: 用d[i]来存放前i项中最大的和,得到end,然后再倒推,得起始的位置begin 然而在程序42行的疑问,大家可以讨论一下吗???? ...

  3. 1003 我要通过! (20point(s))

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

  4. 1003个微生物基因组数据发布

    迄今为止最大规模微生物基因组数据发布:1003个新参考基因组! 近日,美国能源部基因组研究所(DOE JGI)为地球微生物多样性的发现迈出了决定性的一步.6月12日在线发表在<Nature Bi ...

  5. 迪杰斯特拉算法——PAT 1003

    本文主要是将我对于我对于迪杰斯特拉算法的理解写出来,同时通过例题来希望能够加深对于算法的理解,其中有错误的地方希望大家指正. 迪杰斯特拉算法 我将这个算法理解成一个局部到整体的算法,这个方法确实越研究 ...

  6. 【BZOJ】1003: [ZJOI2006]物流运输trans(SPFA+DP)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1003 这题一开始看是不会的额,,,还是看题解了..一开始我觉得不能用最短路啥的,,看了题解发现这是d ...

  7. hdu 1003 Max Sum 解题报告

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a[3 ...

  8. MacApp开发Error Domain=NSURLErrorDomain Code=-1003 A server with the specified hostname could not be

    在开发一个Mac端应用插件时,准备进行网络请求, 刚开始遇到错误,我很快明白是需要设置允许http网络, 但是之后一直遇到 finished with error - code: -1003 Erro ...

  9. 51Nod 1003 阶乘后面0的数量(数学,思维题)

    1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720 ...

  10. LETTers比赛第三场 --1003 大明A+B解题报告

    报告人:侯建鹏 报告日期:2012/4/16 1003 大明A+B 解题思路:模拟 我的方法很简单,就是不停的模拟.模拟.再模拟. 首先,把每个数都分成两部分,整数部分和小数部分,即a_h_count ...

最新文章

  1. Linux学习笔记:Linux分区
  2. 2.2.1生成数 自数
  3. Error:(108) No resource identifier found for attribute #39;style#39; in package #39;android#39;
  4. linux shell之把文本里面的;替换成\n格式输出
  5. 主表的引用字段中找不到唯一的索引_不用找了,大厂在用的分库分表方案,都在这里!...
  6. DeepMind深度学习高级课程,视频已全部放出
  7. 如何php只输入数字和字母,php 不用字母、数字和下划线写 shell
  8. 04748JAVA语言程序设计实践考试复习
  9. 最小二乘法系统辨识小结
  10. c语言初步经典题4----求圆柱体的表面积
  11. 谈谈Processing 3D世界 一
  12. 【附源码】计算机毕业设计java原创网络文学管理系统设计与实现
  13. 设计师必须知道的 5个设计灵感网站
  14. 有画快说番外篇-张聪-专题视频课程
  15. Android Studio plugins 无法在线加载插件
  16. INN:utilization/u-rate/density
  17. 从RGB色转为灰度色算法
  18. 安卓开发 5.6 初探列表视图(ListView)
  19. 软件产品经理的岗位职责与要求
  20. 1024程序员节,北大成立计算机学院!杨芙清任名誉院长【文末送5本书】

热门文章

  1. 01.消消乐填充的算法
  2. 孪生素数【函数实现】
  3. 电视剧中一看就崩溃的镜头
  4. 阿里最受追捧的「中高级技术核心」,助我拿下裹裹offer,附面经
  5. 聊一聊龙蜥硬件兼容性 SIG 那些事儿 | 龙蜥 SIG
  6. 威漫哨兵机器人_漫威中实力最强的五大机器人,哨兵机器人能够团灭变种人!...
  7. docker文件过大,Docker容器引擎,迁移/var/lib/docker/到本机其它挂载分区或远程主机的某个分区。docker迁移
  8. UC伯克利提出AIGC图像编辑新利器InstructPix2Pix,AI模型P图更加精细
  9. 日本准备推行AI婚配,年轻人会为“爱情算法”买单吗?
  10. 今天事真多 哎呦我去了!