这道题目我觉得很重要的一点是理解题目要求,我读了几遍都没有懂,于是找到了其他大神对此的解读。代码中检验的几点是1:必须输入的是P,T或A中的字母,2:P在T前面,3:P,T之间必须要有A,4:P,T有一个,A至少有一个,5:P前的A个数=P,T中间的A个数*T后面A 的个数
#include<stdio.h>
int main()
{
char ch;
int num;
scanf("%d",&num);
while(getchar()!='\n');//清空输入缓存区的数据(因为之前用了scanf)
for(int i=0;i<num;i++)
{
int count[3]={0,0,0};//分别用于存放P前P,T之间,T之后的A的个数
int index=0;
while((ch=getchar())!='\n')
{
if(ch=='A')
{
count[index]++;
}
else if(ch=='P'&&index==0)
{
index=1;
}
else if(ch=='T'&&index==1)
{
index=2;
}
else
{
break;
}
}
if(ch=='\n'&&index==2&&count[1]&&count[2]==count[0]*count[1])//(index=2的条件即可满足P,T都存在,count[1]证明P,T中一定存在A)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
if(ch!='\n')//为后续的程序判断继续清空输入缓存区的数据
{
while(getchar()!='\n');
}
}
return 0;
}