1003. 我要通过!(20)

来源:互联网 发布:xampp mysql 默认密码 编辑:程序博客网 时间:2024/04/29 07:25

答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

输入格式: 每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。

输出格式:每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。

输入样例:
8PATPAATAAPATAAAAPAATAAAAxPATxPTWhateverAPAAATAA
输出样例:
YESYESYESYESNONONONO







#include<stdio.h>

#include<stdlib.h>
#include<string.h>
int ifpat(char line[]);
int main(void)
{
char line[10][100];
int n = 0;
int i = 0,j = 0;

scanf("%d",&n);
while(n != 0)
{
scanf("%s",&line[j]);
j++;
n--;
}
for(i = 0;i < j;i++)
{
if(ifpat(line[i]))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
int ifpat(char line[])
{
int pos_P=0,pos_T=0;
int count_P=0,count_T =0,count_A=0;
int i = 0,j = 0;

for(i = 0;i < strlen(line);i++)
{
switch(line[i])
{
case 'P':count_P++;pos_P = i;break;
case 'T':count_T++;pos_T = i;break;
case 'A':count_A++;break;
default:return 0;
}
}
if(count_P == 1 && count_T == 1)
{
j = pos_T - pos_P;
if(j == 2 && count_A == 1)return 1;
else if(pos_P  ==  strlen(line) - pos_T -  1 && j == 2 && count_A == 1) return 1;
else if(pos_P  * (j-1) == strlen(line) - pos_T - 1 && j >= 2 && count_A > 0) return 1;
else return 0;
}
else return 0;
}
0 0
原创粉丝点击