1003. 我要通过!(20)
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
得到“答案正确”的条件是:
- 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
- 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
- 如果 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
C++AC代码(更新于2017年4月9日)
题目的意思是:P前的A乘PT之间的A等于T之后的A(结合第三点),其中,P和T必须为1,A至少有一个;
第二点注释:
xPATx正确,这是因为,
CountA(x)∗CountA(A)=CountA(x)∗1=CountA(x)
第三点注释:
aPbTc正确,则aPbATca正确,这是因为
有等式,CountA(a)∗CountA(b)=CountA(c),
则必有
CountA(a)∗CountA(b+A)=CountA(a)∗CountA(b)+CountA(a)=CountA(c)+CountA(a)=CountA(a+c)
#include <iostream>
#include <string>
using namespace std;
bool Judge(string &s)//判断YES或者NO
{int P=0,A=0,T=0;//用于记录P、A、T个数int Ppos=-1,Tpos=-1;//记录P和A的位置for(unsigned int i=0;i<s.length();++i){switch(s[i]){case 'A':++A;break;case 'P':++P,Ppos=i;break;case 'T':++T,Tpos=i;break;default:return false;}}//A必须大于等于1,PT必须等于1,P前的A乘PT之间的A等于T之后的Aif(A>=1&&P==1&&T==1&&Ppos*(Tpos-Ppos-1)==(int)s.length()-Tpos-1)return true;return false;
}
int main()
{int n;cin>>n;//case_numberwhile(n--){string s;cin>>s;if(Judge(s))cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}
C语言AC代码(pre)
#include<stdio.h>
#include<string.h>
int main(){char s[105];int n,i,k;scanf("%d",&n);for(i=0;i<n;i++){int tag=0,Dn_P=0,Dn_T=0,Dn_A=0,Nt_P=-1,Nt_T=-1;scanf("%s",s);for(k=0;k<strlen(s);k++){if(s[k]=='P'){Nt_P=k;Dn_P++;}else if(s[k]=='T'){Nt_T=k;Dn_T++;}else if(s[k]=='A'){Dn_A++;continue;}else {printf("NO\n");tag=1;break;}}if(tag==0){if(Dn_P==1&&Dn_T==1&&Dn_A>=1&&Nt_P*(Nt_T-Nt_P-1)==(strlen(s)-1-Nt_T))printf("YES\n");else printf("NO\n");}}
}
转载于:https://www.cnblogs.com/xLester/p/7570522.html
1003. 我要通过!(20)相关推荐
- 牛客网 PAT 算法历年真题 1003: 数素数 (20)
1003:数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整 ...
- 1003 我要通过 (20 分)
题目 题目链接 题解 实现题. 理解题目表达的意思: 字符串中必须仅有 P. A. T 这三种字符,不可以包含其它字符: 可以在 PAT 左右两侧加任意个相同数量的 A,比如 PAT.APATA.AA ...
- 1003 我要通过(20 分)
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&q ...
- DBUtils 笔记
一.DBUtils介绍 apache 什么是dbutils,它的作用 DBUtils是java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作.可 ...
- L1-056 猜数字 C语言,PAT L1-032 Left-pad
根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的Re ...
- extjs 日期不显示
Ext.onReady(function(){//初始化全局 QuickTips 实例 使得tip提示可用Ext.QuickTips.init();//别名var xg=Ext.grid;//创建一个 ...
- 数据结构与算法课程作业--奇数个数的数的查找方法-异或
1003: FFF团的情侣活动 Time Limit: 1 Sec Memory Limit: 2 MB Submit: 256 Solved: 48 [Submit][Status][Web B ...
- this.fields.get(c) is undefined
今天在做项目的时候碰到这个问题,和大家一起分享: 源代码:大家一定需要注意我的Store中的sortInfo: <script type="text/javascript"& ...
- CentOS7部署NFS服务
1.NFS简介 NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和 ...
- oswatch的安装和使用
author:skate time:2011/08/06 oswatch的安装和使用 1.下载和安装 oswatch的安装与使用也比较简单,和nmon一样,都是下载后直接解压就可以使用的. oswat ...
最新文章
- PCA(2):PCA算法实现的两种方式
- php 多图上传编辑器,laravel中使用WangEditor及多图上传
- vue路由守卫判断用户是否登录,如果没登陆就跳转到登录
- 16秋川大计算机基础作业,川大 16秋 《计算机应用基础》第一次作业答案
- 让你的 Node.js 应用跑得更快的 10 个技巧
- 远程连接Ubuntu服务器
- Linux 命令(36)—— awk 命令
- 汇编语言 王爽 第四版 课后检测点 课后实验 包括解释 持续更新~~
- Mac上的MySQL可视化工具总结
- 交叉熵损失函数权重计算
- Jerry Wang的英语学习笔记
- C++(数据结构与算法):55---无权图与有权图的描述(邻接矩阵、邻接链表、邻接数组、十字链表、邻接多重表)
- rrpp协议如何修改_《技术进阶:理解RRPP协议.ppt
- 阻抗匹配基础知识详解
- pytorch dataset自定义_PyTorch | 数据加载及预处理教程
- DataSource和SessionFactory的区别
- C#时间显示格式(12小时制VS24小时制)
- Win10 计算机扩展显示器闪黑屏
- 开源C++单元测试框架Google Test介绍
- 炉石传说JJC英雄简评 JJC combo收集:Ver 1.0
热门文章
- 无言的鞭策:日本20年19人获自然科学诺奖
- 11款新品,一切为了落地!商汤:普惠AI的时代,来了
- 50大产业链全景图(高清完整版)
- 13000行代码、19大技术,这位16岁高中生用C++从头到尾构建了一个机器学习库!...
- 在内存只有 24KB 的电脑上写操作系统,是怎样的体验?
- NBA 投篮数据可视化,4 行代码就能实现!
- 以前写的canvas 小游戏 贪吃蛇代码
- 高质量程序程序设计指南摘录
- Google DeepMind 声称在合成语音领域取得突破
- 转 linux进程内存到底怎么看 剖析top命令显示的VIRT RES SHR值