1003. 我要通过!(20)
来源:互联网 发布:室内设计知乎 编辑:程序博客网 时间:2024/06/15 16:57
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于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
思路分析:
这道题难就难在第三个条件
- 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
- 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
- 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
由第二个条件中的X可知第三个条件中的a和c是相等的,于是第三个条件的描述其实是当(n*A)PAT(n*A)为正确时,(n*A)P(m*A)T(n*m*A)也是正确的。
代码如下:
#include<stdio.h>void printover(int *over,int n)//打印结果{ int m; for(m=0;m<n;m++) { if(over[m]==0) printf("NO\n"); else printf("YES\n"); }}main(){ char pat[101]; int over[10]; int n,i,re,flag,flaga,flagb,flagc,flagbb; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s",pat); for(re=0;pat[re]=='A';re++);//re为遍历字符串的指针 flaga=re;//计算P之前A的个数记为flaga if(pat[re]=='P') { re++; flag=re; for(;pat[re]=='A';re++);//计算P之后A的个数记为flagbb flagbb=re-flag; if(flag==re)//如果P之后没有A的话,结果为0,结束继续输入下个字符串 { over[i]=0; continue; } if(pat[re]=='T') { re++; flagb=re; for(;pat[re]=='A';re++);//计算T之后A的个数记为flagc flagc=re-flagb; //printf("a=%d\nb=%d\nc=%d\n",flaga,flagbb,flagc); if(pat[re]=='\0'&&flagc==(flagbb*flaga)) { over[i]=1; } else { over[i]=0; } } else { over[i]=0; continue; } } else { over[i]=0; continue; } } printover(over,n);}
0 0
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 1003. 我要通过!(20)
- 路由器基础知识详解
- STL容器删除的正确打开方式
- Gym 100818 F Irrational Roots (数学)
- 【模板】后缀数组
- B树和B+树
- 1003. 我要通过!(20)
- 32位项目转64位项目的个人体会
- CCF 第7次认证
- Activity/Fragment最强生命周期总结
- A1528 4g
- 桌面和任务栏突然出现 爱淘宝.lnk Dandelion.exe
- TCP SYN洪泛攻击的原理及防御方法
- Nim(POJ_2975)
- Struts2 S2 – 032远程代码执行漏洞分析报告