题目链接:http://pat.zju.edu.cn/contests/pat-b-practise/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

思路:

P之前A的数目乘以P与T之间A的数目等于P后面A的数目。

对于第1个规则:0*0=0。

对于第2个规则:x*1=x。

对于第3个规则:aPbTc假设正确,那么b一定是A、a=c,bA就是AA,a*2=aa=ca。

代码例如以下:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int Judge(string s)
{
//推断是否是仅仅由P、A、T三种字母组成
for(int i = 0; i < s.size(); i++)
{
if(s[i]!='P' && s[i]!='A' && s[i]!='T')
{
return 1;
}
}
return 0;
}

int main()
{
string s;
int t;
scanf("%d",&t);
while(t--)
{
cin >> s;
int flag = Judge(s);
if(flag)
{
printf("NO\n");
continue;
}
int contP = 0, contT = 0;
int posP = 0, posT = 0;
for(int i = 0; i < s.size(); i++)
{
//检验P、T的个数及位置
if(s[i] == 'P')
{
contP++;
posP = i;
}
else if(s[i] == 'T')
{
contT++;
posT = i;
}
}
if(contP!=1 || contT!=1)
{
//P、T的个数不止一个就错误
printf("NO\n");
continue;
}
else if(posT-posP < 2)
{
//p、T之间没有其它字母(A)则错误
printf("NO\n");
continue;
}
int i = 0;//P左边A的个数乘以中间的等于T右边的个数
int cleft = 0, cmid = 0, cright = 0;
for(i = 0; i < s.size(); i++)
{
if(s[i] == 'P')
break;
else if(s[i] == 'A')
cleft++;
}
for(; i < s.size(); i++)
{
if(s[i] == 'T')
break;
else if(s[i] == 'A')
cmid++;
}
for(; i < s.size(); i++)
{
if(s[i] == 'A')
cright++;
}
if(cleft *

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

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

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

  2. 9.20 noip模拟试题

      Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一届的学弟学妹,邪恶的chenzeyu97发现一位学弟与他同名,于是他当起了善良的学长233 “来来来,学弟,我 ...

  3. 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)

    传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码

  4. FJoi2017 1月20日模拟赛 直线斯坦纳树(暴力+最小生成树+骗分+人工构造+随机乱搞)

    [题目描述] 给定二维平面上n个整点,求该图的一个直线斯坦纳树,使得树的边长度总和尽量小. 直线斯坦纳树:使所有给定的点连通的树,所有边必须平行于坐标轴,允许在给定点外增加额外的中间节点. 如下图所示 ...

  5. FJoi2017 1月20日模拟赛 交错和(等差数列+rmq)

    [题目描述] 无限循环数字串S由长度为n的循环节s构成.设s为12345(n=5),则数字串S为123451234512345… 设Si为S的第i位数字,在上面的例子中,S1=1,S2=2,S6=1. ...

  6. FJoi2017 1月20日模拟赛 恐狼后卫(口糊动规)

    Problem 1 恐狼后卫(wolf.cpp/c/pas) [题目描述] 著名卡牌游戏<石炉传说>中有一张随从牌:恐狼后卫.恐狼后卫的能力是使得相邻随从的攻击力提高. 现在有n张恐狼后卫 ...

  7. 1069. The Black Hole of Numbers (20)【模拟】——PAT (Advanced Level) Practise

    题目信息 1069. The Black Hole of Numbers (20) 时间限制100 ms 内存限制65536 kB 代码长度限制16000 B For any 4-digit inte ...

  8. 【2019.8.20 NOIP模拟赛 T3】小X的图(history)(可持久化并查集)

    可持久化并查集 显然是可持久化并查集裸题吧... 就是题面长得有点恶心,被闪指导狂喷. 对于\(K\)操作,直接\(O(1)\)赋值修改. 对于\(R\)操作,并查集上直接连边. 对于\(T\)操作, ...

  9. 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)

    打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...

随机推荐

  1. Codeforces 680D Bear and Tower of Cubes 贪心 DFS

    链接 Codeforces 680D Bear and Tower of Cubes 题意 求一个不超过 \(m\) 的最大体积 \(X\), 每次选一个最大的 \(x\) 使得 \(x^3\) 不超 ...

  2. java8 Stream 笔记

    stream的定义:对一个源中的一系列元素进行聚合操作. 一系列元素:stream对一组有特定类型的元素提供了一个接口.但是stream并不真正存储元素,元素根据需求被计算出来. 源:stream可以 ...

  3. jQuery基本选择器模块(二)

    选择器模块 1.push方法的兼容性(了解) 问题:IE8不支持aplly方法中的第二个参数是 伪数组 目标:实现 push 方法的浏览器兼容性问题 var push = [].push; try { ...

  4. 9) 十分钟学会android--使用Fragment建立动态UI

    为了在 Android 上为用户提供动态的.多窗口的交互体验,需要将 UI 组件和 Activity 操作封装成模块进行使用,这样我们就可以在 Activity 中对这些模块进行切入切出操作.可以用  ...

  5. 【Oracle】恢复丢失的临时表空间文件

    Oracle 11g以后,临时表空间文件是可以在重启数据库以后自动生成的(当然也可以在相同目录再建一个临时表空间文件),模拟实验如下: 1)删除临时表空间数据文件 SYS@ENMOEDU> se ...

  6. MySQL结构相关

    MySQL 由以下几部分组成: 1.Connectors指的是不同语言中与SQL的交互 2.Management Serveices & Utilities: 系统管理和控制工具 3.Conn ...

  7. SQLServer 事务的隔离级别

    SQLServer事务的隔离级别 数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况. 更新丢失(Lost update) 两个事务都同时更新一行数据,但是第二个事务 ...

  8. redis的跳跃表

    跳跃表是一种插入.查询.删除的平均时间复杂度为O(nlogn)的数据结构,在最差情况下是O(n),当然这几乎很难出现. 和红黑树相比较 最差时间复杂度要差很多,红黑树是O(nlogn),而跳跃表是O( ...

  9. Windows平台上使用ANT编译Hadoop Eclipse Plugin

    一.准备工作:   1.安装JDK 下载页面:http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK6,JDK7都 ...

  10. 安装mysql-python的遇到的问题

    最近更新环境后遇到安装mysql-python的问题,感觉挺折腾的,记录一下. 安装mysql-python的时候一直提示下面的错误 _mysql.c() : fatal error C1083: C ...