PAT1003我要通过

题目
示例

//pat1003
#include<iostream>
#include<string>
using namespace std;
int main()
{
 int countP,countT,n,i,j;//countP记录P的数量,countT记录T的数量 
 int a[10]={0}; 
 int aleft,amid,aright;//计算PA左侧、中间和右侧a的个数 
 char str[10][100];
 cin>>n;//输入需要判断的字符串个数 
 for(i=0;i<n;i++)
 {
  cin>>str[i];
  aleft=0,amid=0,aright=0,countP=0,countT=0;//每次开始对这些值初始化为0 
  for(j=0;str[i][j]!='\0';j++)//如果字符串非空,则一直遍历下去 
  {
   if(str[i][j]!='P'&&str[i][j]!='A'&&str[i][j]!='T')
    a[i]=-1;
   else if(str[i][j]=='P'&&countT==0)//保证P在T之前出现 
   {
    countP++;
   }
   else if(str[i][j]=='T'&&countP==1)//保证T之前只出现了一个P 
   {
    countT++;
   }
   else if(str[i][j]=='A')
   {
    if(countP==0&&countT==0)//累加求PT左侧的a 
     aleft++;
    else if(countP==1&&countT==0)//累加求PT中间的a 
     amid++;
    else if(countP==1&&countT==1)//累加求PT右侧的a  
     aright++;
    
   }
  }
   if(a[i]==0)
   {
    if(j<3)//如果字符长度小于三则绝对不同时包含PAT 
     a[i]=0;
    else if(countP!=1||countT!=1)//保证PT的个数均为1 
     a[i]=0;
    else if(aright==aleft*amid)
     a[i]=1;
   }
  if(a[i]==1)
   cout<<"YES"<<endl;
  else
   cout<<"NO"<<endl;
 }
/*** 
 以下为误解题意的代码,我原以为是输入所有该判断的字符串后,然后同时输出所有
 字符串,以下为错误解,大家可以跳过不读 
 for(i=0;i<n;i++)
 {
  if(a[i]==1)
   cout<<"YES"<<endl;
  else
   cout<<"NO"<<endl;
 }***/
 return 0;
 } 
posted @ 2022-05-11 21:02  爱xiaoyi  阅读(26)  评论(0)    收藏  举报