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

相关文章
|
搜索推荐 JavaScript 前端开发
如何写一个程序,哄女朋友或者老婆开心?
@[TOC](目录) 如何写一个程序,哄女朋友开心?下面有个列子 要编写一个让女朋友高兴的程序,需要考虑以下几点: 1. 了解女朋友的兴趣爱好:如果女朋友喜欢音乐,可以在程序中添加音乐播放功能;如果女朋友喜欢拍照,可以在程序中添加拍照和修图功能。 2. 考虑女朋友的需求:如果女朋友需要管理日历和任务,可以在程序中添加这些功能,帮助她更好地管理时间和任务。 3. 添加个性化元素:在程序中添加一些女朋友喜欢的元素,比如她的名字、照片、喜欢的颜色等等,让程序更加个性化和特别。 4. 添加互动元素:在程序中添加一些互动元素,比如发送生日祝福、情人节祝福等等,让女朋友感受到自己的关心和爱。 下面是一些可
220 0
|
弹性计算 人工智能 云计算
飞天奖!恭喜我的同事们
飞天奖!恭喜我的同事们
447 0
|
测试技术 定位技术
1424:我要送人头
题目描述: 废话他呆了,打了那么久DOTA 2 ,没见过这样的局。队友手了炸弹人和小娜迦,这局是要拖到什么时候啊。因此,废话决定要不停地送人头,让对面赶紧结束这场令他煎熬的比赛。 废话现在有一个软件,可以让他的英雄按照输入的矩阵行走。已知DOTA 2的地图是一个正方形,他只要输入单位转置矩阵就可以无限送人头了。
78 0
|
算法 测试技术
1003 我要通过! (20 分)
1003 我要通过! (20 分)
|
测试技术
1003 我要通过 (20 分)
1003 我要通过 (20 分)
89 0
|
Web App开发 缓存 监控
|
存储 自然语言处理 数据处理
今天,我要干掉 if ... else ...
今天,我要干掉 if ... else ...
|
Web App开发 移动开发 前端开发
|
Web App开发 前端开发 JavaScript
学了点技术,我要开始装X了(一)
大家好,我是零一。今天不看技术文,而是带大家装x,就从我同事 獨釣寒江雪 的《前端装逼技巧 108 式》偷师几招吧~ 绝对让你过把瘾!
235 0
学了点技术,我要开始装X了(一)
|
Web App开发 移动开发 资源调度