这个题比较难,想了几乎一个下午,思路可以当面问我。
#include<stdio.h>
int main(void)
{
char a[10][100]={0};
int n,i=0,j=0,count_A=0,count_P=0,count_T=0,s1=0,s2=0,s3=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",&a[i]);
for(i=0;i<n;i++)
{
j=0,count_A=0,count_P=0,count_T=0,s1=0,s2=0,s3=0;
while(a[i][j]!='\0')
{
if(a[i][j]=='A') //若A,count_A 加1
count_A++;
else if(a[i][j]=='P')//若P,count_P 加1,s1记录P位置
{
count_P++;
s1=j;
}
else if(a[i][j]=='T')//若T,count_T 加1,s2记录T位置
{
count_T++;
s2=j;
}
else //若三个字符都不是,s3置1,跳出循环,不再判断后边字符
{
s3=1;
break;
}
j++;
}
if(s3!=1&&count_P==1&&count_T==1&&!((s2-s1-1)*s1-(count_A-s2+1))&&(s2-s1-1))
//无其他字符&&P T都只有一个&&根据P T位置及A个数,算出A数前×中-后=0&&中间至少一个A
printf("YES");
else
printf("NO");
if(i!=n-1)
printf("\n");
}
return 0;
}