题目:

答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于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. 我要通过!相关推荐

  1. PAT乙级 1003 我要通过! (20分)

    PAT乙级练习总结 PAT乙级 1003 我要通过! (20分) 第二版有注释,希望我的思路可以帮助你. 文章目录 PAT乙级练习总结 一.1003题目 二.第一版只过了三个点 三.第二版 1003 ...

  2. pat 乙级 1003 我要通过!(C++)

    题目 "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正 ...

  3. PAT乙级——1003

    PAT乙1003 题目: 我要通过!(20 分) 题目分析 代码实现 题目: 我要通过!(20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的&quo ...

  4. PAT乙级 1003

    1003 我要通过!(20)(20 分)提问 "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下 ...

  5. PAT乙级1003我要通过!

    1003 我要通过! (20分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件, ...

  6. pat乙级1003 C语言

    1003 我要通过! (20分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件, ...

  7. C++ PAT 乙级 ——1003 我要通过

    题目详情 答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&qu ...

  8. PAT乙级(1003 我要通过!)

    "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&q ...

  9. PAT 乙级 1003. 我要通过!(20) Java版

    "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&quo ...

最新文章

  1. php显示网卡信息,linux如何查看网卡信息
  2. Win10系统删除文件需提供管理员权限-- 解决方案
  3. 一篇文章带你了解APP PUSH推送机制
  4. python入门小程序代码_Python入门小程序(二)
  5. premnmx tramnmx postmnmx 函数用法
  6. 2019.8.21页面功能的实现
  7. PhotoSwipe异步动态加载图片
  8. 水很深的深度学习-Task02机器学习基础
  9. GridView控件RowDataBound事件中获取列字段途径
  10. css面试题手写九宫格
  11. 虚拟搭建局域网模拟器_如何建立虚拟局域网
  12. 神秘的乌克兰地狱之门
  13. 区别samtools faid产生的.fai文件功能和bwa index 产生的四个文件的功能
  14. Android:打开和关闭输入法
  15. 【列表的使用】用python完成购物打印商品列表
  16. 2023年我终于进阿里了,阿里offer五面经验与总结
  17. exp table oracle,oracle中exp,imp的使用详解
  18. C# 画板 Drawing
  19. vue-admin-template配置语言包
  20. 生成最小树(普里姆算法与库鲁斯卡尔算法)

热门文章

  1. 计算机网络按信息传输介质的性能来划分,大学计算机基础练习题网络技术.doc...
  2. 基于matlab的人脸五官边缘检测方法,人脸边缘检测方法研究与仿真
  3. undefined reference to `cv::VideoCapture::VideoCapture()'
  4. java编写科赫曲线_matlab绘制peano(皮亚诺)曲线和koch(科赫曲线,雪花曲线)分形曲线...
  5. c#枚举数字转枚举_C#枚举能力问题和解答 套装4
  6. 计算机编程要哪方面天赋,编程要哪门子天赋
  7. 三菱880彩铅和uni的区别_孟祥雷丨清华美院毕业,彩铅界的“冷军”(附彩铅教程哦!)...
  8. sql共享功能目录无法更改_大企业数据库服务首选!AliSQL这几大企业级功能你不可不知...
  9. java 关注公众号没有调接口_高频面试题:接口和抽象类的区别
  10. 计算机在智能交通应用,计算机技术在智能交通系统的应用