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 “答案正确”是自动判题系统给出的最令人欢喜的 ...
随机推荐
- JavaScript(5)—— 变量及数据类型
JavaScript和Java在概念和设计方面都是完全不同的语言.JavaScript由Brendan Eich于1995年发明,并于1997年成为ECMA标准.ECMA-262是官方名称.ECMAS ...
- uni-app相关
uni-app 中以下组件的高度是固定的,不可修改: 导航栏高度固定为 44pxtabBar 高度固定为 56px 状态栏比较特殊,是一个变量 .status_bar{ height: var(--s ...
- android#ListView的简单用法
新建项目,并修改项目生产的主文件activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- Java基础知识常见面试题汇总第一篇
[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...
- poj2152 Fire(树形DP)
题目链接:https://vjudge.net/problem/POJ-2152 题意:给定一颗大小为n的树,在每个结点建消防站花费为w[i],如果某结点没有消防站,只要在它距离<=d[i]的结 ...
- git安装配置相关
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius ...
- Spring系列四:Bean Scopes作用域
等闲识得东风面,万紫千红总是春. 概述 在Spring框架中,我们可以在六个内置的spring bean作用域中创建bean,还可以定义bean范围.在这六个范围中,只有在使用支持Web的applic ...
- if(!ConnectDBProc(strCmd,m_dbUserName,m_dbPassword))
https://wenku.baidu.com/view/826b3d426bec0975f565e204.html
- STM32的堆与栈与编译信息查看
STM32的堆与栈与编译信息查看 因为一个项目中使用malloc函数动态分配内存400多个字节,返回为0,分配失败.查找失败原因,为堆空间不足分配导致.查看堆和栈分别设置了2K,按正常情况看应能满足分 ...
- 安装consul-client+registrator
安装registrator 下载镜像这里必须要注意:registrator的lastest版本已经2年没更新了,他的最新主板本是master,一定要注意,因为旧的版本无法发现跟自己不是同一个网络的容器 ...