1003. 我要通过!(20) (ZJUPAT 模拟)
题目链接: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 模拟)的更多相关文章
- 牛客网 PAT 算法历年真题 1003: 数素数 (20)
1003:数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整 ...
- 9.20 noip模拟试题
Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一届的学弟学妹,邪恶的chenzeyu97发现一位学弟与他同名,于是他当起了善良的学长233 “来来来,学弟,我 ...
- 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)
传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码
- FJoi2017 1月20日模拟赛 直线斯坦纳树(暴力+最小生成树+骗分+人工构造+随机乱搞)
[题目描述] 给定二维平面上n个整点,求该图的一个直线斯坦纳树,使得树的边长度总和尽量小. 直线斯坦纳树:使所有给定的点连通的树,所有边必须平行于坐标轴,允许在给定点外增加额外的中间节点. 如下图所示 ...
- FJoi2017 1月20日模拟赛 交错和(等差数列+rmq)
[题目描述] 无限循环数字串S由长度为n的循环节s构成.设s为12345(n=5),则数字串S为123451234512345… 设Si为S的第i位数字,在上面的例子中,S1=1,S2=2,S6=1. ...
- FJoi2017 1月20日模拟赛 恐狼后卫(口糊动规)
Problem 1 恐狼后卫(wolf.cpp/c/pas) [题目描述] 著名卡牌游戏<石炉传说>中有一张随从牌:恐狼后卫.恐狼后卫的能力是使得相邻随从的攻击力提高. 现在有n张恐狼后卫 ...
- 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 ...
- 【2019.8.20 NOIP模拟赛 T3】小X的图(history)(可持久化并查集)
可持久化并查集 显然是可持久化并查集裸题吧... 就是题面长得有点恶心,被闪指导狂喷. 对于\(K\)操作,直接\(O(1)\)赋值修改. 对于\(R\)操作,并查集上直接连边. 对于\(T\)操作, ...
- 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)
打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...
随机推荐
- S5PV210开发板 VGA测试【转】
本文转载自:http://www.cnblogs.com/endlessli/archive/2011/07/07/2099865.html 不断努力 不断努力 S5PV210开发板 VGA测试 WY ...
- 【POJ 1084】 Square Destroyer
[题目链接] http://poj.org/problem?id=1084 [算法] 迭代加深 [代码] #include <algorithm> #include <bitset& ...
- nginx FastCGI模块(FastCGI)配置
http://www.howtocn.org/nginx:nginx%E6%A8%A1%E5%9D%97%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E4%B8%AD%E6 ...
- 18.29SSM基础整合开发
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/d ...
- linux下nmap工具的使用
NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工 具包,其基本功能有三个,一是探测一组主机是否在线:其次是扫描主机端口,嗅探所提供的网络服务:还可以推断主机所用的操作系统 ...
- laydate.js时间选择
例子: <asp:HiddenField ID="hfdDateBuid3" runat="server" /> <script type=& ...
- Struts2框架学习(二)——访问流程及架构
1.Struts2的执行流程 从客户端发送请求过来,先经过前端控制器(核心过滤器StrutsPrepareAndExecuteFilter)过滤器中执行一组拦截器(一组拦截器就会完成部分功能代码),拦 ...
- Django[pronounced dʒ] installation on windows
1.Install python, download python windows installer from http://www.python.org/download/ and do inst ...
- dataAdapter
public static class DataAdapter { /// <summary> /// DataRow转换成Hash对象 /// </summary> /// ...
- 【Linux】SecureCRT中按退格键出现^H
分两步: ①SecureCRT上部的“选项”→“会话选项”→终端→仿真→映射键→其他映射→Backspace发送delete(B) 勾选中,确定 ②SecureCRT上部的“选项”→全局选项→常规→默 ...