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 “答案正确”是自动判题系统给出的最令人欢喜的 ...
随机推荐
- kali破解wifi密码
开始 1.选择合适的网卡,有些网卡kali识别不了,我用的网卡信息 2.网卡开启监听模式 3.查看监听模式是否开启成功(网卡名称变成wlan0mon说明已经开启成功) 4.输入“airodump-ng ...
- spring-cloud-starter-stream-rocketmq 坑点j记录
- scrapy生成json中文为ASCII码解决
修改pipelines.py 即可 修改内容如下: import json import codecs import os class BaiduNewsPipeline(object): #增加的 ...
- go语言开启go module
export GO111MODULE=on //linux .MAC set GO111MODULE=on //Windows
- mybatis 基础(一) xml配置
如果文章有误,请各位楼下评论,感谢各位积极修正! 一起学习,成为大佬! mybatis: 1.轻量级 2.高级映射(实体类与数据库表字段的映射) 这样就可以后续开发中去操作实体类而不需要去关注数据库, ...
- hdu 3473 区间条件极值 - 区间 差的绝对值 之和的最小
题目传送门//res tp hdu 目的 对长度为n的区间,给定q个子区间,求一x,使得区间内所有元素与x的差的绝对值之和最小. 多测. n 1e5 q 1e5 ai [1,1e9] (i∈[1,n] ...
- Elasticsearch5.x安装及常见错误的解决方法
Elasticsearch是基于java开发的,机器上必须要先java环境,elasticsearch5.x建议用jdk8的最新版本.下面介绍elasticsearch5.x的安装步骤: 一.安装El ...
- IDEA将项目打包为指定class文件的jar
转自:https://blog.csdn.net/makang456/article/details/86699375 [背景] 公司最近要和某大公司合作,将本公司的产品提供给其它公司单独部署 ...
- tensorflow零起点快速入门(3)
创造并运行数据 创造了-3到3的32条数据,然后通过sess.run获取并显示输出数据. x=tf.linspace(-3.0,3.0,32) print(x) sess=tf.Session() r ...
- Gluster的搭建和使用
Gluster的搭建和使用 序言 我们为什么要去使用分布式存储,在一家大型公司或者大规模的集群中,大家可能会经常遇到一个问题,我的数据怎么存放,放在那,数据空间不够了怎么办,这些问题经常困扰着我们. ...