1003 我要通过

简介: 1003 我要通过

题目描述

题目所在的链接,点进去察看题目

解题思路

第一步:查找字符串中除PAT之外的字符,如果存在就NO,在查找的过程中,PT只出现1一次,A至少存在一次,如果不满足NO

第二步:

经分析,如果要YES,我们可以得到,1.c是a的倍数(c,a不为0时),最终得到a,c相等且b=1的状态。2.a,c都为0时,b的值随便(在上一步时判断了,b肯定不为0)。除此之外都是NO。

代码有解释

代码实现

#include <stdio.h>

int main()
{
  int n,a,b,c;
  scanf("%d", &n);
  char arr[10][100];
  int i = 0;
  for (i=0;i<n;i++)
  {
    scanf("%s", arr[i]);
  }
  i = 0;
  //统计P,T前a,中b,后c中A的个数
  while (i<n)
  {
    a = 0; b = 0; c = 0;
    char* temp = (char*)arr[i];
    //第一步开始进行判断
    while (*temp)
    {
      if (*temp == 'A')
        a++;
      else if (*temp == 'P')
        b++;
      else if (*temp == 'T')
        c++;
      else//不是这3个字符时跳出
        break;
      temp++;
    }
    //下面排除多P多T没有A的情况
    if (b!=1||c!=1||a==0)
    {
      printf("NO\n");
      i++;
    }
    //除PAT之外的字符
    else if (*temp!='\0')
    {
      printf("NO\n");
      i++;
    }
    //只含PAT的字符
    else
    {
      a = 0; b = 0; c = 0;
      temp = (char*)arr[i];
      //P前面的A的个数
      while (*temp++ != 'P'&& *temp)
      {
        a++;
      }
      //P与T之间的A的个数
      while (*temp++ != 'T' && *temp)
      {
        b++;
      }
      //T之后的A的个数
      while (*temp)
      {
        c++;
        temp++;
      }
      //变成aPbTc,其中a与c相等
      while (c)
      {
        if (a && c && c != a && c % a == 0)
        {
          c = c - a;
          b--;
        }
        else
          break;
      }
      if (b == 1&& c == a)//满足aPbTc的形式
        printf("YES\n");
      else if (a == 0&& c == a)//满足PbT的形式
        printf("YES\n");
      else//错误形式
        printf("NO\n");
      i++;
    }
  }
  return 0;
}

相关文章
|
7月前
|
人工智能 小程序 算法
分享64个JavaGame源码总有一个是你想要的
分享64个JavaGame源码总有一个是你想要的
183 0
|
7月前
|
人工智能 Java 关系型数据库
分享66个JavaGame源码总有一个是你想要的
分享66个JavaGame源码总有一个是你想要的
397 0
|
存储 自然语言处理 JavaScript
产品让我限制一下输入框字数,结果我搞了3天没搞明白
作为一名新人er,看到自己的文章列表空空如也总觉得不是那么回事。但是想动手写点什么吧,脑子里实在又憋不出什么料。写一篇正儿八经的技术文章真的是好难好麻烦,尤其是看了首页推荐的大佬文章,更是觉得自己那点东西就别拿出去丢人了。有充分借口的日子总是短暂而且美好。这不,就在不久前的一次组会上,老大们又提起了”写点什么“的事儿,并且一再强调,不需要写出个什么宏文出来,写点什么都行。你看这台阶都给到这了,不下
|
测试技术 定位技术
1424:我要送人头
题目描述: 废话他呆了,打了那么久DOTA 2 ,没见过这样的局。队友手了炸弹人和小娜迦,这局是要拖到什么时候啊。因此,废话决定要不停地送人头,让对面赶紧结束这场令他煎熬的比赛。 废话现在有一个软件,可以让他的英雄按照输入的矩阵行走。已知DOTA 2的地图是一个正方形,他只要输入单位转置矩阵就可以无限送人头了。
90 0
|
存储 自然语言处理 数据处理
今天,我要干掉 if ... else ...
今天,我要干掉 if ... else ...
|
小程序 数据安全/隐私保护 计算机视觉
切勿外传,我要把我的写作“小心思”放出来了!| 年终总结之学习篇🚩
切勿外传,我要把我的写作“小心思”放出来了!| 年终总结之学习篇🚩
185 0
切勿外传,我要把我的写作“小心思”放出来了!| 年终总结之学习篇🚩
|
程序员 Linux Python
遇见一个删除文件的问题,网上的答案却都在扯淡?
不知道大家是否和我的感觉一样,看到拒绝访问首先想到的是,这个文件被占用了,导致无法删除。然后检查代码是否存在未释放的进程。从头到尾review了代码,没有什么问题。 那上百度查查呗,结果千奇百怪的答案出来了,但总结下来都是说安装或者重装Python的时候,存在权限设置问题,需要修改Python.exe对User用户的权限。天真的我居然真的照着去做了,结局依然是没什么卵用。
316 0
|
网络协议 Linux
被鹅厂搞懵逼了(更正)
在 FIN_WAIT_2 状态下如何处理乱序的 FIN 报文
被鹅厂搞懵逼了(更正)