PAT 1003.我要通过1
答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
得到“答案正确”的条件是:
- 字符串中必须仅有
P、A、T这三种字符,不可以包含其它字符; - 任意形如
xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字符串; - 如果
aPbTc是正确的,那么aPbATca也是正确的,其中a、b、c均或者是空字符串,或者是仅由字母A组成的字符串。
现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
输入格式:
每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。
输出格式:
每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO。
输入样例:
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
输出样例:
YES
YES
YES
YES
NO
NO
NO
NO
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks; namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
/*字符串中只能含有PAT,1个P,1个T,多个A,且P一定在T前,PT直接至少一个A
* xPATx是正确的,(x为空串或者A)
* 条件3基于条件2,若aPbTc is right,那么aPAbTca 也是right
* 假设A(n),B(n),C(n),为n次递归后含有A的个数
* 基于条件2
* 根据条件得A(1)=C(1),B(1)=1
* 根据条件3
* A(n)=A(1),B(n)=B(n-1)+1,C(n)=C(n-1)+A(1)
* 解的
* A(n)=A(1)
* B(n)=B(1)+(n-1)=1+n-1=n
* C(n)=C(1)+(n-1)*A(1)=n*A(1)
* =>A(n)*B(n)=C(n)
*/ int count = ;
//输入一个数值,表示要测试多少个用例
count = Convert.ToInt32(Console.ReadLine());
//存放输入的用例
string[] strIn = new string[count];
//存放YES or NO
string[] strOut = new string[count];
//输入用例并存放在strIn数组中
for (int i = ; i < count; i++)
{
strIn[i] = Console.ReadLine();
} //对用例进行判断
for (int i = ; i < count; i++)
{
//获取用例中"P","T"的个数
int pnumber = Regex.Matches(strIn[i], "P").Count;
int tnumber = Regex.Matches(strIn[i], "T").Count;
//获取用例中"P""T"的下标
int indexP = strIn[i].IndexOf("P");
int indexT = strIn[i].IndexOf("T");
//判断用例是否只含有PAT三种字符
for (int j = ; j < strIn[i].Length; j++)
{
if (strIn[i][j]!='A'&& strIn[i][j] != 'P' && strIn[i][j] != 'T' )
{
strOut[i] = "NO";
}
//筛选出只含有PAT字符的字符串
else
{
//筛选出P,T个数只为1的字符串
if (pnumber == && tnumber == )
{
//P在A前面
if (indexP < indexT)
{
//获取lengtha,lengthb,lengthc,表示A(n),B(n),C(n)
int lengtha, lengthb, lengthc;
string a, b, c;
a = strIn[i].Substring(, indexP + );
lengtha = Regex.Matches(a, "A").Count; b = strIn[i].Substring(indexP + , indexT - indexP - );
lengthb = Regex.Matches(b, "A").Count; c = strIn[i].Substring(indexT + );
lengthc = Regex.Matches(c, "A").Count;
//排除PT直接没有A的字符串
if (lengthb==)
{
strOut[i] = "NO";
break;
;
}
//满足条件A(n)*B(n)=C(n)
if (lengtha * lengthb == lengthc)
{
strOut[i] = "YES";
}
else
{ strOut[i] = "NO";
} }
else
{ strOut[i] = "NO";
} } else
{
strOut[i] = "NO";
}
}
} }
//输出答案
for (int i = ; i < count; i++)
{
Console.WriteLine(strOut[i]);
} Console.ReadKey();
}
}
}
PAT 1003.我要通过1的更多相关文章
- PAT 1003我要通过!
PAT 1003 我要通过! 答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出&qu ...
- PAT 1003 我要通过!(20)(代码+思路)
1003 我要通过!(20)(20 分)提问 "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下 ...
- 迪杰斯特拉算法——PAT 1003
本文主要是将我对于我对于迪杰斯特拉算法的理解写出来,同时通过例题来希望能够加深对于算法的理解,其中有错误的地方希望大家指正. 迪杰斯特拉算法 我将这个算法理解成一个局部到整体的算法,这个方法确实越研究 ...
- PAT 1003. 我要通过!(20) JAVA
参考http://blog.csdn.net/bin8632/article/details/50216297 答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答 ...
- PAT 1003. 我要通过!(20)
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&quo ...
- PAT 1003
1003. Emergency (25) As an emergency rescue team leader of a city, you are given a special map of yo ...
- PAT 1003. Emergency (25)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- 浙大 pat 1003 题解
1003. Emergency (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- PAT 1003. Emergency (25) dij+增加点权数组和最短路径个数数组
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- PAT 1003 我要通过!
https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192 “答案正确”是自动判题系统给出的最令人欢喜的 ...
随机推荐
- Base64加密 解密
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- javaweb期末项目-stage1-part2-UML设计
UML设计.rar-下载 说明:解压密码为袁老师全名拼音(小写) 相关链接: 项目结构:https://www.cnblogs.com/formyfish/p/10828672.html 需求分析:h ...
- robots.txt文件
网站通过一个符合Robots协议的robots.txt文件来告诉搜索引擎哪些页面可以爬取.Robots.txt协议全称“网络爬虫排除标准”.一般情况下,该文件以一行或多行User-agent记录开始, ...
- springboot整合es客户端操作elasticsearch(三)
继续上个随笔: 那么我们只需要修改controller中文件就可以完成相关操作 本次主要是对文档得操作: 更新文档: package com.cxy.elasticsearch.controller; ...
- 基于bootstrap模态框、fakeLoader实现全局遮罩层
一.fakeLoader.js介绍 fakeLoader.js 是轻量级的 jQuery 插件,帮助你创建动态的全屏加载掩饰微调效果,模拟页面预加载的效果. 插件下载地址:https://github ...
- ZOJ Problem Set - 1006
注意:A的ascii为65,a为97就行了 其他没什么,略过. 代码参看: http://my.oschina.net/dianpaopao/blog/124545
- 2019牛客暑期多校训练营(第八场)-A All-one Matrices (单调栈+前缀和)
题目链接:https://ac.nowcoder.com/acm/contest/888/A 题意:给n×m的01矩阵,求出其中全为1的矩阵个数(不被其它全1矩阵包括). 思路:和第二场多校的次大子矩 ...
- vue组件之间的通信, 父子组件通信,兄弟组件通信
组件通讯包括:父子组件间的通信和兄弟组件间的通信.在组件化系统构建中,组件间通信必不可少的. 父组件--> 子组件 1. 属性设置 父组件关键代码如下: <template> < ...
- yum方式安装mono
https://blog.csdn.net/qq_21153619/article/details/81459359 这样应该比较简单 yum方式按照mono rpm --import "h ...
- SetIcon(m_hIcon, TRUE);的作用
SetIcon(m_hIcon, FALSE);// Set small icon 这条语句,程序显示时,左上角就会显示定义了的图标,生成的EXE程序也显示了这个图标 SetIcon(m_hIcon, ...