pat 1003 我要通过C语言简单实现
首先我们先看一下题目
对于题目的3个通过条件可以推出一个公式
p前面的A的数目乘上p后面的A的数量要等于t后面的A的数量
那么问题就简化为定向计数问题记录3种A的数目
具体代码如下
#include<stdio.h>
#include <string.h>
int main(){
int n;
scanf("%d",&n);
for (int i=0;i<n;i++){
char a[101];
scanf ("%s",a);
int l;
char *fi=a;//记录第一字符的地址
char *p;
char *t;
int _A=0,A=0,A_=0;//定义3种A的数目
l=strlen(a);
p=strchr(a,'P');//寻找p的地址
t=strchr(a,'T');//寻找t
for (int i=0;i<l;i++){//记录数目
if((fi+i)<=p){
if(*(fi+i)=='A')
_A++;
}else if((fi+i)<=t){
if(*(fi+i)=='A'){
A++;
}
}
if((fi+i)>t){
if(*(fi+i)=='A')
A_++;
}
}
if((_A*A==A_)+(_A+A+A_+2==l)+(_A+A+A_!=0)==3){//判断条件
printf ("YES\n");
}else
printf ("NO\n");
}
return 0;
}
指针加上字符串数组可以解决