1003 我要通过! (20 分)

这个题比较难,想了几乎一个下午,思路可以当面问我。

#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值