PAT乙级 1003. 我要通过!
题目:
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
得到“答案正确”的条件是:
1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符; 2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串; 3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
思路:
首先第三个条件上来有个“如果”,这个明显是告诉有前提的,排除第一个条件后我们可以基本确定是通过第二个条件来推定,好了我们根据正则表达式的特点,知道基本是#PAT#的模型,所以就有PAT三个字母,因为题目要求每个测试输入包含1个测试用例,所以我们假设就是PAT作为正确的表达式,有第三个条件”aPbTc “正确,所以a和c都是null,b是A,同时”aPbATca”也是正确的,所以我们肯定”PAAT”也是正确的,我们把其再看成”aPbTc”型,就有”PAAAT”也是正确的;再来我们假定”APATA”正确,所以根据”aPbTc “,可以推的”APAATAA”正确,继续还有”APAAATAAA”等正确;可以看出 P前A的个数乘 P T中间的A的个数 等于T后A的个数。
对于第1个规则:0*0=0。对于第2个规则:x*1=x。对于第3个规则:aPbTc如果正确,那么b一定是A、a=c,bA就是AA,a*2=aa=ca。
代码:
#include<stdio.h> #include<string.h> int main() {char str[105]; int n,i;scanf("%d",&n);for(i=0;i<n;i++){int a=0,b=0,c=0; //分别表示aPbTc中abc的长度 int flag=0; //判断是否有其他字符 int j,flag1=0,flag2=0; //表示是否经过P,T scanf("%s",str);for(j=0;j<strlen(str);j++){if(str[j]=='A'||str[j]=='P'||str[j]=='T') {if(str[j]=='P') flag1=1;else if(str[j]=='T') flag2=1;else{if(flag1!=1) a++;if(flag1==1&&flag2!=1) b++;if(flag2==1) c++;}}else{flag=1;break;}}if(a*b==c&&flag==0&&b!=0) printf("YES\n");else printf("NO\n");}return 0; }
转载于:https://www.cnblogs.com/s1lentmoon/p/6714634.html
PAT乙级 1003. 我要通过!相关推荐
- PAT乙级 1003 我要通过! (20分)
PAT乙级练习总结 PAT乙级 1003 我要通过! (20分) 第二版有注释,希望我的思路可以帮助你. 文章目录 PAT乙级练习总结 一.1003题目 二.第一版只过了三个点 三.第二版 1003 ...
- pat 乙级 1003 我要通过!(C++)
题目 "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正 ...
- PAT乙级——1003
PAT乙1003 题目: 我要通过!(20 分) 题目分析 代码实现 题目: 我要通过!(20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的&quo ...
- PAT乙级 1003
1003 我要通过!(20)(20 分)提问 "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下 ...
- PAT乙级1003我要通过!
1003 我要通过! (20分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件, ...
- pat乙级1003 C语言
1003 我要通过! (20分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件, ...
- C++ PAT 乙级 ——1003 我要通过
题目详情 答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&qu ...
- PAT乙级(1003 我要通过!)
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&q ...
- PAT 乙级 1003. 我要通过!(20) Java版
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&quo ...
最新文章
- php显示网卡信息,linux如何查看网卡信息
- Win10系统删除文件需提供管理员权限-- 解决方案
- 一篇文章带你了解APP PUSH推送机制
- python入门小程序代码_Python入门小程序(二)
- premnmx tramnmx postmnmx 函数用法
- 2019.8.21页面功能的实现
- PhotoSwipe异步动态加载图片
- 水很深的深度学习-Task02机器学习基础
- GridView控件RowDataBound事件中获取列字段途径
- css面试题手写九宫格
- 虚拟搭建局域网模拟器_如何建立虚拟局域网
- 神秘的乌克兰地狱之门
- 区别samtools faid产生的.fai文件功能和bwa index 产生的四个文件的功能
- Android:打开和关闭输入法
- 【列表的使用】用python完成购物打印商品列表
- 2023年我终于进阿里了,阿里offer五面经验与总结
- exp table oracle,oracle中exp,imp的使用详解
- C# 画板 Drawing
- vue-admin-template配置语言包
- 生成最小树(普里姆算法与库鲁斯卡尔算法)
热门文章
- 计算机网络按信息传输介质的性能来划分,大学计算机基础练习题网络技术.doc...
- 基于matlab的人脸五官边缘检测方法,人脸边缘检测方法研究与仿真
- undefined reference to `cv::VideoCapture::VideoCapture()'
- java编写科赫曲线_matlab绘制peano(皮亚诺)曲线和koch(科赫曲线,雪花曲线)分形曲线...
- c#枚举数字转枚举_C#枚举能力问题和解答 套装4
- 计算机编程要哪方面天赋,编程要哪门子天赋
- 三菱880彩铅和uni的区别_孟祥雷丨清华美院毕业,彩铅界的“冷军”(附彩铅教程哦!)...
- sql共享功能目录无法更改_大企业数据库服务首选!AliSQL这几大企业级功能你不可不知...
- java 关注公众号没有调接口_高频面试题:接口和抽象类的区别
- 计算机在智能交通应用,计算机技术在智能交通系统的应用