[C++]PAT乙级1003. 我要通过!(17/20)
/*
1003. 我要通过!(20) “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于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 */
/*
思路:
方法1:规则制约法
复杂度:O(n)
方法2:递归
O(n^2)
*/
#include<stdio.h>
#include <string.h>
using namespace std; const int MAX_LENGTH = 100; //判断是否满足条件1:1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
bool isPATChars(char chs[], int len){
for(int i=0;i<len;i++){
if(chs[i] != 'P' && chs[i] != 'A' && chs[i] != 'T')
return 0;
}
return 1;
} bool isPAT(char chs[], int len){
if(len < 3)
return false;
int p_flag=-1;//标记P位置
int t_flag=-1;//标记T位置
int a_count=0; //统计中间a的个数:若中间a的个数为1-2个,正确;反之,不正确
for(int i=0;i<len;i++){
if(chs[i] == 'A'){
if(p_flag != -1){
if(t_flag == -1){
a_count++;
}
}
} else if(chs[i] == 'P'){
if(p_flag == -1){//说明:找到第1个字符'P'
p_flag = i;
} else {//说明有超过1个字符'P'了
return false;
} } else {//当前元素为 'T'
if(t_flag == -1){//说明:找到第1个字符'T'
if(p_flag == -1){ //说明: 此时出现的'T'比'P'先出现,错误情况
return false;
}
t_flag = i; //出现的第一个在'P'后面的 ‘T’
} else {//说明有超过1个字符'T'了
return false;
} if(p_flag != -1){//说明:'P'在'T'之前出现了,正确情况
if(p_flag == i - 1){ //说明:'P'与'T'紧贴着,中间没有'A' 错误情况
return false;
}
} else {//说明:'P'在'T'之前出现了,错误情况
return false;
}
}
} if(p_flag == -1 || t_flag == -1 || a_count>2 || a_count<1)//保证PAT均有出现
return false;
return true;
} int main(){
int size;
char chs_arr[10][MAX_LENGTH]; scanf("%d", &size); for(int i=0;i<size;i++){
scanf("%s", (chs_arr+i));
} for(int i=0;i<size;i++){
//scanf("%s", (chs_arr+i));
//printf("%d", strlen(chs_arr[i]));
if(isPATChars(chs_arr[i], strlen(chs_arr[i]))){
if(isPAT(chs_arr[i], strlen(chs_arr[i]))){
printf("YES\n");
} else {
printf("NO\n");
}
} else {
printf("NO\n");
}
}
return 0;
}
[C++]PAT乙级1003. 我要通过!(17/20)的更多相关文章
- PAT 乙级 1003 我要通过!(20) C++版
1003. 我要通过!(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue “答案正确”是自动判题系统给出的最 ...
- PAT乙级 1003. 我要通过!(20)
答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1. ...
- PAT 乙级1003. 我要通过!(20)
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...
- PAT 乙级 1003. 我要通过!(20) (C语言描述)
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&quo ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
- PAT乙级:1094 谷歌的招聘 (20分)
PAT乙级:1094 谷歌的招聘 (20分) 题干 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面 ...
- PAT乙级:1053 住房空置率 (20分)
PAT乙级:1053 住房空置率 (20分) 题干 在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内,若存在超过一半的日子用电量低于某给 ...
- PAT乙级:1069 微博转发抽奖 (20分)
PAT乙级:1069 微博转发抽奖 (20分) 题干 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入 ...
- PAT乙级:1092 最好吃的月饼 (20分)
PAT乙级:1092 最好吃的月饼 (20分) 题干 月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风 ...
- PAT乙级:1014 福尔摩斯的约会 (20分)
PAT乙级:1014 福尔摩斯的约会 (20分) 题干 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk ...
随机推荐
- 【SFA官方译文】:Spring Cloud Data Flow中的ETL
原创: 影宸风洛 SpringForAll社区 昨天 原文链接:https://www.baeldung.com/spring-cloud-data-flow-etl 作者:Norberto Ritz ...
- C++ const 理解
转载自:https://www.cnblogs.com/jiabei521/p/3335676.html 如果函数需要传入一个指针,面试官可能会问是否需要为该指针加上const,把const加在指针不 ...
- jenkins学习:jenkins+maven
之前配置了jenkins+gitlab,jenkins已经可以从gitlab上面拉取代码了,执行项目构建还要加一个maven. 1.配置全局的maven 系统管理-全局工具配置-配置maven的地址 ...
- Deepin或者Ubuntu上永久配件navicat
1.深度商店下载安装Navicat,期间可能会要求安装wine等. 2.安装完毕 终端环境下找到Navicat的安装目录 langzi@langzi-PC:~$ whereis ...
- AOP和IOC
AOP切面编程,作用:事务,日志,统一调用,统一实现,拦截,分发: 切点:告诉编译器切面作用于哪个package中的class IOC:控制反转,相对于new 对象来说的,依赖注入:AuthorWar ...
- RPC简介
一:为什么会出现RPC呢? 当公司业务量还是很小的时候,所有的程序都放置在一台机器上,程序之间通过函数或者类来调用.1:当公司的业务发展越来越大,业务线越来越多,公司后端人员也越来越多,分布在不同的业 ...
- (转载) python3: beautifulsoup的使用
转载: https://www.cnblogs.com/chimeiwangliang/p/8649003.htmlfrom bs4 import BeautifulSoup import reque ...
- nginx做负载均衡+keepalived(做主备)
部署Nginx 一,安装nginx依赖: 查看是否已经安装 rpm -qa |grep gcc rpm -qa |grep openssl-devel rpm -qa |grep pcre-devel ...
- SpringBoot笔记十六:ElasticSearch
目录 ElasticSearch官方文档 ElasticSearch安装 ElasticSearch简介 ElasticSearch操作数据,RESTful风格 存储 检查是否存在 删除 查询 更新 ...
- Hadoop问题:java.net.SocketException: Network is unreachable
问题描述:Failed on local exception: java.net.SocketException: Network is unreachable; Host Details : loc ...